10.11-10.18 一周总结
10.11 比赛
100+100+45+10=255,\(A,B\) 题比较顺利的解决了。\(C\) 题想到了一些与正解相关的地方,但是还差一些地方没有想到。\(D\) 题是一个轮廓线 dp,同时加上一些组合意义就可以解决,没有思考太多。
总结
\(A,B\) 题做出来的速度还可以加快。尽量使用一些简单的做法,比如 \(A\) 题使用了线段树,但实际上一个排序就可以解决。
\(C\) 题比较经典的结论是 \(l\le x\le r\) 的二进制数可以拆成 \(\mathcal O(\log V)\) 个前缀,每个前缀后面的数字可以随便选(类似于线段树二分)。还有就是在树高为 \(\mathcal O(\log n)\) 的树上做关于叶子个数的 dp 的复杂度是 \(\mathcal O(n\log n)\) 的。
\(D\) 题就是一个轮廓线 dp 的运用,并且对于方案数的平方可以考虑组合意义为:选择两个不同的方案使得操作出来的矩阵相同的方案数。
10.13 杂题
感觉都比较 Ad-hoc,最重要的是学习了单位根反演。
即:
可以用来计算一个多项式的 \(\sum [x^i,k|i]f(x)\),即次数为某个数倍数的所有项的系数和。
10.14 比赛
20+100+0+0,打得不好。主要是因为 \(A\) 题想了比较久,但是并没有想到正确的解法。对于这种需要找性质的计数题没有思路的时候可以换一个角度思考。比赛的时候大部分都想到了,但是最后一步可以将 BC
看成一组没有想到,导致没有推出最后简单的组合数。\(B\) 题完成的还是比较快,属于比较简单的构造题。\(C\) 题比较重型,并没有什么数据结构,但是计数的方式和维护的东西都比较困难。\(D\) 题比较难想到,有些 Ad-hoc。
总结
这场比赛失误点在于 \(A\) 题,思路还是有些没有转换过来,并且花的时间也有一些久。可以分配一些时间给 \(C,D\) 题,虽然都不太可能通过,但是可以多拿一些分。并且 \(A\) 题数据范围较小的部分也没有打暴力,只通过了一档特殊性质,导致最终的分数不高。
10.15 比赛
100+100+30+30 \(A,B\) 题在 \(1.5h\) 就通过了,但是 \(C\) 题想了比较久,大体思路是比较对的,然而忘记了带标号无向连通图的方案数如何计算,以为只能使用多项式,然而实际上一个简单的 \(\mathcal O(n^2)\) 容斥就可以算出来,没有做出来是有些失误的。\(D\) 题是数学中比较经典的 trick,之前苟学长似乎讲过一道类似的题,但是当时不太懂。下来已经搞懂了。
总结
这场比赛的失误在于没有通过 \(C\) 题,并且最后 \(\mathcal O(3^n)\) 的暴力也没有写出来。下次应该多留些时间打暴力,虽然感觉自己很有机会通过,但是当时间不够时应该尽量多拿一些分,让分数能够提高一些。
10.16 比赛
这场比赛有一些特殊情况,参加了运动会,导致只打了 \(1h\) 左右,不过仍然有一些不足之处。
总结
回来之后通过了 \(A\) 题,但是 \(B\) 题忘记了极小mex区间怎么求了,导致最后半个小时没有通过。这种比较经典的 trick 应该要掌握,因为很多时候比赛时间有限,没有充足的时间来自己推导一遍,所以这些套路尽量要第一次记住,第二次能运用。
\(C\) 题感觉是有一些难度的字符串题目,一些字符串算法有所遗忘,要进行复习。\(D\) 题是一个先找到最优解的性质,再进行数位 dp 的题目,比较可做。
10.17 网络流专题
因为太久没写网络流相关的题目,已经忘记 ISAP 怎么写了。
感觉列表中很多题目都运用到了一个比较常见的技巧:就是如果一些问题可以转换为最大流模型,那么根据最大流最小割定理,如果建出来来的图求最小割可以用一个比较好维护的式子表示,那么可以考虑维护一下这个式子。比如如果发现割的边只有可能是与汇点和源点相连的边,或者是图有特殊性质或结构,都可以考虑这个转换。
10.18 比赛
打的 NOIP 模拟赛。预期:100+100+100+55,实际:100+30+100+55。
这场比赛其实打得还不错,\(A,B\) 题并不是很简单的题目,但是经过思考都会了做法,并且在 \(2h10min\) 通过了所有大样例。
\(C\) 题就是二维的本质不同子序列,因为一维的做法之前自己想出来过,于是二维很快也想到了做法,\(2h40min\) 左右完成了 \(C\) 题。
\(D\) 题在成外见过一个类似的题目,但当时那个题目并没有补,于是就思考了一下怎么做,但是没有想出来一些很对的做法。在 \(3h\) 决定打一个 \(55pts\) 的暴力,中途还认为可以得到 \(70pts\),但是没有成功。在 \(3h40min\) 写完,最后做了一下检查。
总结
这场比赛 \(B\) 题竟然挂了 \(70pts\),属于低级失误。而错因也比较弱智,就是在离散化的时候需要加入 \(1,n\) 两个点,但是我竟然在离散化后再加的,导致离散化数组并非有序,可能后面的二分就可能有错。然而大样例又能全部通过,导致失分。
所以在检查的时候不能只检查像线段树之类的数据结构有没有写错,更应该要检查细节的问题有没有出错。而肉眼检查很难看出错误,所以要打对拍检查。现在看来当时是有时间打对拍的,也不会导致 \(D\) 题的 \(55pts\) 写不完。以后每场比赛都尽量让能拿的分数都拿到,不要让预期分数永远高于实际分数。
总的总结
这一周打的比赛比较密集,也出现了比较多的失误。离 CSP-S 还有不到两周,尽量减少自己的失误,并且避免出现之前出现过的失误,每场比赛把力所能及的分数都拿到。