20230928天七集训测试总结
状态比上次联考要好,策略和心态上都没有再出问题,就是要注意对拍。
T1
大水题,切得很快。
T2
一道博弈论,思考方向错了。曾经脑袋里可能飘过一两秒正确的思路方向但是没有继续想。
部分分打得还是比较多,虽然没有打满,但不是很重要(和 T3 比的话)。
每次决策将集合分成两部分,空集返回 \(0\),共 \(m\) 层。复杂度 \(O(nm)\)。\(b_i\) 相等的情况启发我们,如果两人都能做到使答案为 \(0\) 则答案一定为 \(0\)。一个人最多需要 \(\log n\) 次(自己操作)就能使答案为 \(0\),故层数最多是 \(O(\log n)\) 级别。最终复杂度 \(O(n\log n)\)。
T3
读完题就会了(感觉难度严格小于 T2 呀)。但是!圆方树建错了...且由于大样例过水没有发现,也没有对拍,直接恭喜挂掉 \(100pts\)。对拍的重要性!!!
一个基础的建图技巧,向因数中恰为两个质数之积的数连边,边数和点数都是 \(O(n\log^2 V)\) 的。然后跑 tarjan 建圆方树,对最大的连通块做一遍类似找重心的操作。
T4
这 \(10pts\) 暴力都这么难打,打了二十多分钟。
又是贡献。论思维难度,虽然我在考场上没有想出来,但实际上并不是非常困难,只是粗略估计码量巨大。
可以用 dsu on tree 预处理出每个点的子树内的路径条数,考虑固定一条路径时另一条路径的情况数,并归到路径的三个关键点(端点和 LCA)的贡献。计算包含一个点的路径情况数就将三个贡献分别计算并减去。