CSP-2025 游记
呃呃……大抵算是一个烤柿总结。
大抵是提前四十分钟进了考场(以下时间均是大约,非确切)。
考前
坐第一排靠窗,应当是很不错的位置,考完跑得最快。
前几天上火了,带了 1.55L 的水,大抵够喝。
发了若干 min 的呆,不记得回忆了些什么。
考试前五分钟,我旁边的一位初中生才成功找到正确的座位。
考试中
拿分部分
2:30 开考,先解压文件,建了个文件夹,开 T1。
T1 看起来很人畜无害,一半这个限制就很不错,直接贪心,调试完后,时间来到 3:00。
T2 一眼有一个 kruskal,然而这个 \(k\) 不好解决,一看数据范围,\(k\le 10,n\le 10^4\),好了,直接考虑暴力枚举。
发现 \(m\) 很大,然而注意到最多 \(n-1\) 条边有用,选出来,再补一条自环,应该会方便处理些。
发现每次处理时,如果把所有边存在一起再排序,复杂度 \(O(2^knk(\log{nk}+\alpha(nk)))\),
挺悬的,然而想起之前练习的一个笔记,这种情况下,可以先把各类边分别排序,然后有一个多指针,
应该是可以做到 \(O(2^knk(k+\alpha(nk))\) 的,显然有一个堆优化,复杂度 \(O(2^knk(\log{k}+\alpha(nk))\),
算出来大概 \(5\times 10^8\),发现 \(2^kk\) 不是满的,应该有个 \(\frac{1}{2}\) 常数,加个选边够了就停止的优化。
听说 CCF 今年机子很快,于是把上界当 \(2\times 10^9\) 算了。
以防万一,写了个数据生成器,造了组有点极端的数据,测了一下,7s!哦,原来我没开 O2,开了之后 0.75s,O2 神力!
估计 CCF 数据不会比这个强,收工!诶,要是写完 T3 有时间,回来改个手写堆,应该还能更快,再说吧。
由于总是在喝水,上了个洗手间,回来 4:00。
旁边那位初中生,已经发出了若干次叹息了,然而这叹息声有很奇怪,有点烦。
坠机部分
开 T3,看完题面看了下数据范围,嗯,应该有个 \(s\) 相等和 \(t\) 不等长的问题。
看起来应该是个多模匹配,可以有一个 AC 自动机……等一下,这不是 NOI 级考纲里面的吗?或许有别的神秘做法吧?
感觉这个不同的部分可以用模拟赛学到的 trick 交织在一起(比如 \(abc,def\) 拼成 \(adbecf\)),
诶,那我把 \(t\) 串不同的部分交织起来,放进 AC 自动机里,然后把 \(s\) 串直接交织起来,跑一遍,dfs 一遍 fail 树,不就可以了吗?
中途还不知道出于什么清奇的脑回路,以为一对 \(s,t\) 可以有多次贡献,然后开了 long long。
可能逝掉和这里有些关系,没有想清楚答案的上界,导致暴力也没什么好思路……
写了代码,小样能过,大样挂了,答案大了好多……
发现少考虑了一个限制,\(s\) 要是 \(t\) 的子串。
这里感觉有一个二维数点的问题……然而思索若干 min 无果,感觉很难转化……T3 就这样了吧,把这代码扔上去,分数随机。
那个初中生由于发出奇怪的声音被考官警告了。
骗分部分
大概是 5:50 了,去 T4 写个暴力吧。
浅浅想了一会,想出来了 \(O(2^nn^2)\) 的指数暴力,20pts,还行。
写完后发现还有 4pts \(n=m\),也写了。
写完 6:20 了,整理了一下文件夹,检查了一些东西。
T2 的手写堆也没写。
考后
和其它同学讨论了一下做法,一哥们和我说他 T3 AC 自动机上又是倍增又是二分,疑惑。
坐车回家 10 点多了,碎觉。
次日,水洛谷,补题。
T1 懒得默写了,T3 T4 默写没啥实际意义。
看到了说 T2 那个复杂度只能拿 80pts 的说法,由于造了组数据,不是很在意,默写了一下代码,发现能过民间数据。
然而,T3 看到 Register_int 巨佬的这篇题解,顿时感觉比赛的时候头被门夹了……80 行就能写完的代码。
最终得分 100+100+5+24=229,
除了 T3 都表现良好……问题应该是:在实力欠缺的情况下使用了过于激进的贪心策略……
但愿 NOIP 能好运来,过三个题。

浙公网安备 33010602011771号