NOIP 前复盘突击
NOIP 前复盘突击
本文主要分几个部分:
- CSP-S2024 前三道题的题解。
- CSP-S2024 的经验复盘。
- 28、29号的备战策略。
- 考前注意。
CSP-S2024 前三题题解
[CSP-S 2024] 决斗
题目要求退出的怪兽尽量多,也就是有效攻击要尽量多。由于一只怪兽至多发起一次攻击,所以自然想到从小到大排序后进行计数。如果当前 \(i\) 前面还有怪兽则可以发起攻击。类似于双指针维护。
[CSP-S 2024] 超速检测
题目有两个问题:超速车辆数量,被架空的监控数量。
对于一辆车知道起点、初速度、加速度,显然可求每辆车的加速区间。可用树状数组在每个监控的位置单点 \(+1\),再对于每辆车看其超速区间内是否存在监控,至此第一问解决。
对于若干辆被抓拍到的车的超速区间可视为若干条线段,每个监控可视为与线段垂直的法线,第二问等价于求最少的法线数量使得所有线段被法线全覆盖。将线段按右端点从小到大、左端点从大到小排序,每次遇到目前监控无法覆盖当前线段时,二分找一个最靠近且小于该线段右端点的监控视为目前监控。同时统计监控数 \(tot\),第二问答案即为总监控数减去 \(tot\)。
[CSP-S 2024] 染色
题目要求贡献最大,对于 \(i\) 可能产生的贡献是 \(a_i\) 或 \(0\)。考虑 \(i\) 可以产生贡献,那么上一个最靠近他的同色点 \(j\) 必须满足 \(a_j=a_i\)。
先猜想对于 \(i\) 从上一个离他最近的 \(j\) 使得 \(a_j=a_i\) 转移过来不会更劣。考虑 \(j\) 前面还有一个 \(k\) 使得 \(a_k=a_j=a_i\),从 \(j\) 或 \(k\) 转移过来颜色分布的差别只有 \(j\)。而若 \(j\) 与 \(i\) 不同色,\(j-1\) 和 \(j+1\) 本来可能存在一对贡献会被 \(j\) 截断(因为最靠近 \(j\) 且等于 \(a_j\) 的是 \(i\) 和 \(k\),所以 \(a_{j-1}\neq a_j\) 且 \(a_{j+1}\neq a_j\)),所以从 \(j\) 转移过来一定不劣,猜想成立。
于是可用 \(lst_x\) 表示上一个等于 \(x\) 的位置,即上文所说的 \(j\)。若从 \(j\) 转移过来,那么 \([j+1,i-1]\) 的颜色全部相同且与 \(i\) 和 \(j\) 异色,那么其间能产生贡献的只有相邻相等的项。可以用一个前缀和 \(sum_i\) 维护这个东西。
DP 方程呼之欲出,设 \(f_i\) 表示考虑到第 \(i\) 位时的最大答案,首先自然有 \(f_i=f_{i-1}\),其次根据上文分析有 \(f_i=f_{lst_{a_i}+1}+a_i+sum_i-sum_{lst_{a_i}+1}\)。两者取个最大值即可。目标状态 \(f_n\)。
CSP-S2024 经验复盘
本部分分为题目总结和全场总结。
题目总结
首先是 T1,虽然题面长但还是很快想到贪心且快速切掉,值得肯定。体现了对这类算法的直觉性和代码实现能力。唯一不足的是考中将 sort
换成了堆排,这个属于知识性错误,但是无伤大雅。值得一提的是对 T1 的检查很细致入微,不知道 NOIP 时是否可以适当缩短一点检查时间。
由于 T1 的快速解决给了 T2 很多富余时间,简单分析后并没有想到超速区间,于是打了 \(O(n^2)\) 保底。但是暴力的实现时间过长,消耗完了 T1 所剩余的时间并且浪费了 T2 的期望时间,导致心态不稳,没有想出正解。一般来说 T2 (除非他真的比 T3 难)我是应该切掉的,所以 NOIP 上一定要先想正解,如果想不到再思考部分分并看看是否对正解有启发作用。
T3 看完题目后马上得到了对正解很有用的一个性质,即 \(lst_x\) 的性质。但是在 T2 浪费大量时间的情况下没有心思想出正解 DP,DP 弱项的我决定跳题。等到回来时放弃了 DP 的想法,用那个性质打了一份贪心,待到贪心调完之后才意识到贪心无法解决后效性的问题。此时已经完全心态爆炸,忘记了通常贪心无法解决的问题可用 DP 解决。最后只打了 dfs 最低档部分分。在 NOIP 上一定要开一题忘一题,不要受前面影响太大,适当地做一些行为调整自己的心态,如喝水、上厕所。并且一定要回忆三年 OI 总结的所有经验。更不要对随便猜想的做法马上上代码,等到发现错误时已经浪费很多时间了。
T4 看完题目后认真想了一下怎么实现可以简洁一点,思考的很快,实现的时候频频看题面,中途还去上了个厕所,随后打完一遍过了小样例和中样例。然后自以为的优化了一下,以为可以拿 32 分了,但是成绩出来还是只拿了 20 分。值得表扬的是决策果断、心态良好、实现稳健,不足的是没有多想一点点,如果把自以为的优化认真思考一下,还是有可能拿下那 12 分的。NOIP 上要给 T4 分配一定的思考时间,不要只打暴力就跑路,运气好的话说不定可以抠下来 5~10 分。
全场总结
首先是对《CSP2024S游记》的 upd:210 分拿下 S 组一等了。
比赛过程中心态跌宕起伏,这是考场上最忌讳的。还是比赛经验不够丰富。但是 NOIP 大概率是我最后一次比赛了,所以一定要以稳健平和的心态去应对。
比赛途中对于有点新思路但是死活卡住的情况或者代码怎么也调不过的情况一定要果断出去,上厕所、喝水、吃东西、看风景,干什么都好,这个时候脑子在相对自由的环境下可以运转得快些。
比赛时要回忆三年 OI 学到的每一个奇技淫巧,还有一些老是想不到的算法,例如图论建模、差分数组、字符串哈希、反悔贪心、动归解决贪心后效性、线段覆盖、0/1 Trie、差分约束系统、根号分治……
检查要把握尺度,太长不好太短也不好。
想题的时候应“大胆猜想、小心求证”,并且一定要(感性)证明,除非是打表找规律,否则不要轻易上代码。Think twice,code once!
考试途中不要想东想西,这是我 OI 生涯的最后一场正式赛了,好好专注于思考的过程、好好享受这 OI 生涯中最后的 4.5h。
28、29 号的备战策略
11.28
当天打模拟赛。全真模拟,当 NOIP 去对待。模拟赛一般难度都会比 NOIP 难一点,不要沮丧、不要悲观,按照自己的节奏思考,不要受别人的影响。
考完后无论某道题有没有做出来都要复盘,这样的效益比做出来这道题的效益还要大。
11.29
当天不要做太多题了,复习一下 oi-wiki 的纲内内容、再看一遍“一句话题解”和这篇文章内容。还有时间就看之前我的博客。
还有收藏的文章。
晚上可以适当的做一做 NOIP 去年真题。
当天下午打球注意不要着凉了,早点睡觉。
考前注意
- 记得带身份证、准考证、水杯、纸巾、士力架、外套、手表、笔袋。
- 进考场前不用着急,先去上个厕所。
- 进考场后把承诺书提前写好后放在一边,不要等到比赛后被硬控几分钟。
- 开考后前几分钟先配置好 VScode,运行 A+B 成功后再解压文件、解密 PDF。
- 考试途中按既定策略执行,保持稳健的心态。
- 考试完后记得带上随身物品:手表、水杯、外套、士力架、笔袋。
- 考完后不用在意别人发挥得怎么样,至少所有都结束了。
AFO 前最后一次正式赛了,一定要加油!!
NOIP2024 GD-0699 RP++!!