ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

NOI Online 2022 一游

2022-03-29 19:04:09  阅读:170  来源: 互联网

标签:大样 typedef NOI T2 long T1 2022 一游 dp


NOI Online 2022 一游

TG

啊,上午比提高,根据去年的经验,题目配置估计那至少一黑

所以直接做 1 题即可。(确信)

总体:估分 140,炸了但没完全炸

奇怪的过程

开题:3 2 1 (雾

事情是这样的:我又根据经验,觉得 T1 不会太简单。。。

突然发现 T3 和 T2 似乎可做,恩?然后 T3 搞半天发现一个需要 cdq 的神奇东西

果断放弃。


接着看 T2 ,好吧,不知脑子如何灵光,我越看越像字符串?

这也是往年经验:去年考的字符串,今年可能还考。

折腾了 0.5h 的自动机,字典树,哈希,最后依然放弃

思考的算法,也是从正解,到 70,最后 40。。。


终于看到 T1,仔细地思考,发现就是一个长得和 弹飞绵羊 询问神似的东西,

还不用修改,这不,直接倍增?用若干分钟码完,调了一下过了大样例,大概是我唯一能 A 的题

  • 大致思路:预处理出这个点在全局在哪个点加入时弹出

    那么在这中间的点一定不是“成功的”,因为至少有这个点在栈中

    可以连边,一定形成一颗树,问题就转换成一个点往上跳多少次才能跳出区间

    用倍增即可

#include <bits/stdc++.h>
using namespace std;
typedef unsigned long long uLL;
typedef long double LD;
typedef long long LL;
typedef double db;
const int N = 5e5 + 5;
inline int Rd() {
    register int x = 0; char C = getchar();
    for (; C < '0' || C > '9'; C = getchar()) ;
    for (; C > '/' && C < ':'; C = getchar()) x = (x << 1) + (x << 3) + (C ^ 48);
    return x;
}
int n, Ti, a[N], b[N], st[N], top, t[N], lst[N], Ecnt, dep[N], Q[N], hd, tl, fa[N][25];
struct Ed { int to, nxt; } e[N << 1];
inline void Ae(int fr, int go) {
    e[++Ecnt] = (Ed){ go, lst[fr] }, lst[fr] = Ecnt;
}
inline void bfs() {
    fa[n + 1][0] = n + 1;
    Q[++tl] = n + 1;
    for (int u; hd < tl; ) {
        u = Q[++hd];
        for (int i = lst[u], v; i; i = e[i].nxt) {
            v = e[i].to, dep[v] = dep[u] + 1;
            fa[v][0] = u, Q[++tl] = v;
        }
    }
}
inline int work(int x, int lim) {
    register int St = x;
    for (int i = 19; ~i; i--)
        if (fa[x][i] <= lim) x = fa[x][i];
    return dep[St] - dep[x] + 1;
}
int main() {
    freopen("stack.in", "r", stdin);
    freopen("stack.out", "w", stdout);
    n = Rd(), Ti = Rd();
    for (int i = 1; i <= n; i++) a[i] = Rd();
    for (int i = 1; i <= n; i++) b[i] = Rd();
    for (int i = 1; i <= n; i++) {
        while (top && (a[st[top]] == a[i] || b[st[top]] <= b[i])) t[st[top--]] = i;
        st[++top] = i;
    }
    while (top) t[st[top--]] = n + 1;
    for (int i = 1; i <= n; i++) Ae(t[i], i);
    bfs();
    for (int j = 1; j <= 19; j++)
        for (int i = 1; i <= n + 1; i++)
            fa[i][j] = fa[fa[i][j - 1]][j - 1];
    for (int l, r; Ti--; ) {
        l = Rd(), r = Rd();
        printf("%d\n", work(l, r));
    }
}

点真不戳,写完 T1 就 11 点了,去写了 T2 的 40 和 T3 的 10 分就滚蛋了

关键是 T2 的 40 还写挂了?输得这么彻底~

赛后

竟然是 2蓝 + 1 紫?难度比去年差距可不小

其他人 T1 用 线段树(或 BIT)+ 离线,omg 我真的想不到

不过我的倍增常数绝对小(蜜汁自信

lage T2 以优秀的复杂度过了大样例?%%%

总结

  1. 不能凭借以前的经验
  2. 仔细思考,不写挂暴力
  3. 多方面思考

PJ

下午 pj ,炸上天。

t1 送分,10 min 切了后,剩下的时间交给 t2 ,t3

然后 t2 坐电脑前 2.5h 推不出规律,,,

打了个暴力。。。

剩下的时间去想 t3,由于自身能力与心态吧。

一个四维 dp 没想到,也是暴力。

炸了,%%% ljh t3 过大样例

总结

  1. 数学思维
  2. dp

总结

可能是最后一次 online 了,

存者且偷生,希望我能尽力补全 dp、数学短板

标签:大样,typedef,NOI,T2,long,T1,2022,一游,dp
来源: https://www.cnblogs.com/KonjakLAF/p/16073318.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有