NOIP2023 游记

Day 0

润南航,看了几个板子,摆烂。

准考证上写的是“入门组”,难蚌。

water235 好闪,拜谢 water235。

NOIP2023 ++RP!

Day 1

17 岁生日。

早上 7:40 左右到南航排队。听到有人在说 SkyWave 进 NOI2024 江苏 E 队。拜谢天波。

8 点开始试机。改好 codeblocks 的设置之后,写了一个测试程序,输出 NOIP2023 RP++sto water235 orz

8:27 左右收到了题面 pdf,但是没有收到大样例,不会不给大样例吧。

8:34 才收到 pdf 的密码,比赛延时了 5 分钟。

先看一下四道题,今年居然没有寄数题?那太好了。

T1 一眼 sb 题,显然把当前串从小到大,其他串从大到小排序,直接无脑 \(O(nm\log n)\) 就完事了。8:57 测完大样例。

T2 也很简单,直接让 \(a_i=i\)\(T=n+1\)\(F=-n-1\)\(U=0\),最后并查集合并 \(i\)\(a_i\)\(-i\)\(-a_i\)\(U\) 的个数就是 \(i\)\(-i\) 在同一个集合的个数。9:19 测完大样例。

T3 的数据范围看上去应该是 \(O(q(n+m))\),也就是暴力修改,\(O(n+m)\) 判断。

首先发现只有 \((a_1-b_1)(a_n-b_m)>0\) 时答案可能为 1。假设 \(a_1>b_1\),也就是 \(a_i\) 对应的一段 \(b_j\) 必须满足 \(\max_{j} b_j < a_i\)。显然有 \(O(qnm)\) 暴力 DP 做法。

对于所有的 \(i\),符合条件的 \(j\) 形成的集合是包含关系。很快就想出了 \(O(q(n+m)\log m)\) 的做法,从小到大枚举 \(i\),记录对于当前的 \(i\),最多能匹配到的位置 \(r\),如果 \(a_i>a_i-1\) 就向右找第一个不合法的,否则向左找最后一个合法的。但这显然无法通过。

然后发现对于 \(a_i\) 的下降段,\(r\) 只需跳到最后一个小于下降段最小值的位置即可,之前更大的 \(a_i\) 一定可以到达这个位置。

又想了一会儿,发现只有 \(a_i\) 中的前缀最大值是有用的,只有这些 \(i\) 能让 \(r\) 向右移动。对于其他 \(i\),只要判断在 \([1,r]\) 中是否存在合法位置即可,不需要移动 \(r\)。最后判断 \(r\) 是否等于 \(m\)。发现当 \(a_n\)\(a\) 中最大值时这样做就行了,能过特殊性质。

\(a_i\) 中的最大值之后的部分还没有处理。想了一会儿,发现这个问题是对称的,如果 \(X,Y\) 合法,正反各做一遍上面的判断一定都合法。然后猜测正反判断都合法 \(X,Y\) 就合法,感性理解一下,感觉是对的,又考虑了几种情况,都没有出问题。于是开始写这个做法。10:30 开始写,10:53 测完大样例。然后看了一下大样例的输出,还好不是全 0 或者全 1。

然后看 T4。显然,没有被区间覆盖的位置不可能选。于是想出了对时间离散化后暴力 DP 的 \(O(m^2)\) 做法。然后发现这个 DP 可以用线段树优化,就能做到 \(O(m\log m)\)。11:56 测完大样例,发现最后一个大样例跑了 1.1s。

开始检查程序。前两题本身就是暴力没法拍,造了一些 corner case 测了一下。第三题随机数据感觉强度不够。最后检查了一下数组大小、多测清空、long long、文件之类的东西。

出场估分:400。

感觉 T1、T2、T4 都不太可能挂掉,就看 T3 了。

下午摆烂,等民间数据。

晚上云斗出分,400 分。另外一个民间数据也没挂分,开香槟。

Day 2

小图灵数据也出来了,没挂分。

I AK NOIP-Junior 2023。

posted @ 2023-11-18 21:26  猫猫NOIP2006  阅读(348)  评论(0)    收藏  举报