CSP2021 游记
Day 1
早上 9:00 起床,早上最后看了几个模板以及以前写的常用错误,一直挺紧张的,听了几首歌后感觉好了很多,但后果就是下午考试想不出来题的时候脑内就开始自动循环这些歌。。。
来到考场后得知上午CSP-J考了4道模拟题,顿时有点慌。
14:30 开考,密码不知道是什么东西,先看了一遍题,感觉 T1 是模拟,T2 是经典DP套路,T3是神仙结论题,T4也是神仙题。
冷静看了一下 T1,发现之前读的题面有问题,画了几个图之后,发现如果一架飞机在有 \(i\) 座廊桥时找到了位置,那么它在 \(>i\) 座廊桥也能找到位置并且位置不会有变化。因此只需要假设有无限座廊桥,此时第 \(i\) 架飞机如果停在第 \(j\) 座廊桥,那么只要廊桥数 \(\ge j\) 它就能找到位置。很快实现了一个做法,对拍了一下感觉没问题。
继续看 T2,题目描述非常长,我错误的以为就是在一个合法括号序列上每个空位都可以加不超过 \(k\) 个 *,于是直接写了一个从左到右扫一遍的 DP 发现过不了样例2,手画了一下发现对于 \((A()B)\) 的情况, \(A、B\) 不能同时都填 *,加了这个限制后需要使用区间 DP ,写出来的代码讨论较多,有一大堆细节错误,还好我通过与一个搜索算法对比,很快就找到了错误,写完调完已经是 15:30 了。
此时再看 T3,以为是一个神仙构造题。发现可以枚举最后取出的的 \(n\) 个数组成的区间,确定这 \(n\) 个数后,前 \(n\) 个数可以通过枚举第一个取出的元素时头还是尾,然后贪心的能选左边就选左边完成。但这样做依然是 \(\mathcal O(n^2)\) 的。接下来我卡在这里很长时间,用了一大堆分类讨论才优化到 \(\mathcal O(n)\) 。写代码的时候又写的非常混乱,写完过拍已经是 17:00 了,而且仍然非常虚。
T4 一眼感觉是轮廓线 DP,但复杂度太高。很快又感觉很像最小割模型,但发现自己不会在网络流的图上保证某一个点必须与 \(s、t\) 中的一个联通。(是的没错,就是这个连两条边就能解决的问题)然后就以为最小割不可做????又想了想 \(k=2\) 的做法,感觉相当于在图上连一条路径将两个钦定点隔开,但我又不太会处理这个东西。(一个最短路就解决的问题)最后只能写了一个轮廓线 DP 企图通过 \(n\le 18\) 的点,加了许多剪枝但依然跑得很慢。。。然而时间已经走到了 18:30。
Day 1.5
出考场发现人均 \(360+\),所有人都会 T4 的最小割,大呼一句我是憨憨。然后 T3 原来根本不需要枚举后 \(n\) 个数的区间,只需要枚举一个分界点就行了???最终估分 100+100+100+10,洛谷民间数据 T4 拿了 25 分,但听说数据极水,前 3 题依然很虚。
Day 3
loj 强力数据卡掉了我的T3做法。
总结
本次考试还是暴露出了很多问题。对网络流,平面图转对偶图等知识掌握得非常不好。同时 T3 在发现后 \(n\) 个选出的数满足重要性质时就满脑子想着枚举这 \(n\) 个数的区间,钻了牛角尖,却没想过只用枚举一个分界点。并且在 T3 花了很长时间只写了一个不确定正确性的算法后,我在想 T4 的过程中一直非常焦急,很多算法没有仔细思考就否定了,算是本次考试犯的非常重大的失误,下次务必要改正。
未来规划
距离 NOIP 还有一个月的时间,作为高二oier,这无疑是非常关键的一场比赛。接下来的一个月时间我应当继续查漏补缺,多练一些题目,多做总结,弥补自己现在的各种缺陷。