【赛后总结】CSP-S 2022 寄

考场实况

(时间都不记得了/kk)

  1. 将题面都阅读一遍,发现今年阅读量额外大,导致读完T3已经花了二十多分钟了,就暂时没手算T4样例,确定做题顺序:\(T1<T2<T3<T4\)
  2. 思考T1,想到疑似正解的做法,开开心心码完,开开心心开T2。
  3. T2发现暴力分很多,再加上感觉T1能A,就开开心心写暴力。
  4. T3正解没思路,开开心心打百行暴力。
  5. 想了一会T4没思路,瞎搞一点特判,回去检查T1到T3
  6. 打T3特判
  7. 罚坐+整活(大雾)

预计得分: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:星战

不可以,总司令。

暴力想法:

  1. 对于更改操作,维护二维数组 \(vis_{[i][j]}\) 表示从 \(i\)\(j\) 能否到达,\(2\) 操作全部赋为 \(0\)\(4\) 操作全部赋为原来 的值。

  2. 每次询问时,用拓扑排序先维护每个点的出度是不是有且只有一个,再判断是否有环即可。

事实上百行暴力不如“不可以,总司令”,强烈谴责€€£的随机数据拉高了1=线,建议写赛后致歉贴()。

事实上不需要判环,维护每个点/集合的出度即可。这个可以通过找规律瞎搞或者哈希随机值维护。

T4:数据传输

很容易想到倍增的做法,再用一个很恶心的分类讨论即可。

这么一说感觉这一次的题都很水(bushi),但数据最水

总结

  1. 时间复杂度不能只是理论上的,如果有多部分的时间复杂度加起来也是有可能超时的。
  2. 即使是暴力/特判,也要保证这一部分分不挂。
  3. 考场的预计得分尽量往小了估,防止感觉前面已经有很多分了,后面就不想打了的情况出现。
posted @ 2022-11-14 09:55  Cloote  阅读(322)  评论(2编辑  收藏  举报