【赛后总结】CSP-S 2022 寄
考场实况
(时间都不记得了/kk)
- 将题面都阅读一遍,发现今年阅读量额外大,导致读完T3已经花了二十多分钟了,就暂时没手算T4样例,确定做题顺序:\(T1<T2<T3<T4\)
- 思考T1,想到疑似正解的做法,开开心心码完,开开心心开T2。
- T2发现暴力分很多,再加上感觉T1能A,就开开心心写暴力。
- T3正解没思路,开开心心打百行暴力。
- 想了一会T4没思路,瞎搞一点特判,回去检查T1到T3
- 打T3特判
- 罚坐+整活(大雾)
预计得分:100+90+40+0
实际得分:60(时间复杂度算错)+60(时间复杂度算错导致特判挂了)+40+0
题解
T1:假期计划
考场想的是先预处理出对于每个点,距离小于 \(k\) 的所有点,然后跑一边DP
,考场算的时间复杂度是预处理 \(O(nm)\),DP
\(O(n^2)\),常数是 \(16\)。
正解在我考场想的做法里面把预处理的 DFS
改成了 BFS
,然后用一个贪心的思想只保留对于每个点,距离小于 \(k\) 的权值前三大的点即可。
T2:策略游戏
区间最值水题,考场显示由于以为切掉了T1自信心爆棚+T2暴力+特判分打好的话应该的确有90pts,和正解相差不大,就没怎么想正解了。
用 ST
表 或者线段树维护一下区间最小/最大的负数/非负数即可。
T3:星战
不可以,总司令。
暴力想法:
-
对于更改操作,维护二维数组 \(vis_{[i][j]}\) 表示从 \(i\) 到 \(j\) 能否到达,\(2\) 操作全部赋为 \(0\),\(4\) 操作全部赋为原来 的值。
-
每次询问时,用拓扑排序先维护每个点的出度是不是有且只有一个,再判断是否有环即可。
事实上百行暴力不如“不可以,总司令”,强烈谴责€€£的随机数据拉高了1=线,建议写赛后致歉贴()。
事实上不需要判环,维护每个点/集合的出度即可。这个可以通过找规律瞎搞或者哈希随机值维护。
T4:数据传输
很容易想到倍增的做法,再用一个很恶心的分类讨论即可。
这么一说感觉这一次的题都很水(bushi),但数据最水
总结
- 时间复杂度不能只是理论上的,如果有多部分的时间复杂度加起来也是有可能超时的。
- 即使是暴力/特判,也要保证这一部分分不挂。
- 考场的预计得分尽量往小了估,防止感觉前面已经有很多分了,后面就不想打了的情况出现。