CSP-S 2023 游记

发布时间 2023-10-23 20:45:20作者: AzusidNya

Day-2

因为要做考场,所以下午换了机房。机子很卡,但是能用。调一道线段树一个晚上怎么都调不出来,开始焦虑。

Day-1

早上先重新看了看脑洞治疗仪的代码,还是找不到问题,放弃了。然后去回顾了网络流和一些串串算法的板子,把 KMP 的板子和最小费用最大流的板子重新切了一遍,然后发现旁边挺多人在打 CS1.6,又看见右边的同学在看星际穿越,于是在共享文件夹里把星际穿越拷了下来,在中午 12:40 左右看完,然后唱歌去了。

下午稍微看了下板子后,决定开始补番,把 MyGO 看到了 #6。

Day-0

上午把 MyGO 看完了,然后听 MyGO 和 AveMujica 的歌度过了一上午,属于是彻底放松了。

好像有一个省忘关网题目泄露了,所以把 J 组题都看了一遍,觉得前三题很水。然后 T4 有点难,但是因为继续看 MyGO 所以没有深入思考。

开考后先看题。T1 乍看没思路,但是好像可以乱搞。然后看 T2,一眼看出 \(O(n ^ 2)\) 的区间 DP 做法。看起来是个区间 DP 的优化,感觉这种数数题我比较熟所以先记了下来。T3 是个大模拟,T4 是树论,乍看都没什么想法,所以先估分数大概是在 150 左右。

然后开始乱搞 T1。一开始在尝试推性质,突然发现答案最多只有 \(100000\),立刻就知道怎么做了,直接枚举答案然后一个一个 check 即可。人比较笨做的比较慢,做完 T1 的时候考试开始过去了 45 分钟。

然后 T2 很快把一个 \(O(n ^ 2)\) 的 dp 打了出来,然后尝试找一些性质。

瞪了一会,感觉像括号匹配,所以设 \(f_i\)\(i\) 结尾的能删完的串的数量,\(p_i\) 为最长的能匹配的位置,先直接无脑把括号匹配跳指针的代码写了上去,自然是错了,手敲了一下发现 \(\text{aaaaa}\) 这种东西都会出错,所以重新推。发现消除的顺序不重要,所以把 \(p_i\) 改成最短能匹配的位置,然后过了样例,得到了另一个 \(O(n ^ 2)\) 做法。但是这个做法的空间是 \(O(n)\) 的,所以有优化空间。

发现每次开个栈不值,所以想要利用之前的栈。然后发现了只要当前字符不等于上一个字符就能直接跳过上一个栈。进一步发现,不断的去跳栈(即跳 \(p\) 指针),只要当前字符和栈顶字符不同都能跳过这个栈,直到没法继续跳栈,这时再重新开一个栈。这么优化一下复杂度还是 \(n^2\),但是明显快了很多。瓶颈在于跳栈到无法跳的时候。

发现到没法跳的时候,要么此时指向的字符和当前字符相同可能更新 \(p\) 指针,否则 \(p\) 指针就指向 \(0\)。这么一敲,虽然证不出复杂度,但是样例全过,
还跑得很快!直接拿一开始的区间 dp 开始对拍,然后去开 T3。这个时候时间过去了两个半小时。

T3 重新看了下题,没有什么思路。因为把 T2 大样例过了所以有点焦躁,于是在 T3 的注释里花了 10min 写了些发电小作文稍微调整了下情绪,然后开始写 T3。这个时候感觉结构体和元素可以组成树形结构,所以回忆了之前校内模拟赛写过的一道构造一个数据结构去维护的一个博弈论题,决定直接对结构体和元素各构建一棵树去搞。写了 30min,发现一个特殊性质都写不动,于是放弃了,去看 T4。这个时候看 T2 没拍出锅来,比较安心。

然后去写 T4 的部分分。特殊性质 A 写了个树形 dp,把第二个样例过了。特殊性质 B 因为种树的顺序固定了,所以直接模拟,敲完模拟后翻了下样例,发现四个大样例没有特殊性质 B,所以也没有测,就这么放在那了。

这个时候还有 25min。我想要在这 25min 敲出 T3 的 \(5\) 分部分分,也就是特殊性质 AD。可是写了 10min 还是发现写不动。突然想起我 T2 好像没开 long long,于是回去把 long long 开了后开始摆烂,继续在 T3 注释部分发电。

考试结束,考时估分是 \(100 + [85, 100] + 0 + [25, 35] = [210, 235]\)。结果在回家的车上突然发现我 T4 特殊性质写的 dp 是错误的,所以估分变成了 \(100 + [85, 100] + 0 + [0, 10] = [185, 210]\)。感觉还算挺满意的,虽然 T4 我的 dp 很唐、、

有人说 T2 是原题,然后我按自己的理解重新敲了一遍代码,但是怎么都过不去 CF 那题,会 TLE,非常慌。

Day-1

在小图灵、洛谷、云斗上的估分都是 \(100 + 100 + 0 + 0 = 200\)。一看 \(T4\),我的特殊性质 B 居然 RE 掉了,乐。

感觉还行,至少绿钩升上蓝钩应该是比较稳的。但是最后发现 T2 没开 long long 挺极限的。

感觉考前补番把做脑洞治疗仪时的焦虑清掉了,下次还在考前补番(

然后开始尝试证明自己 T2 的复杂度,感性理解是 \(O(n\left|\alpha\right|)\)的,但是不会严格证明。然后去洛谷讨论区翻了下,发现有人跟我做法一致并且证明了确实是 \(O(n\left|\alpha\right|)\),松了一口气。因为 CF 的那题的 \(|\alpha| = n\),所以 TLE 是自然的。