7月5日模拟赛总结
here.
T1 想树形 dp 未果,遂暴力 70。
正解需要进行奇偶性分析。由于所有点权和一定为偶数(是奇数直接可以排除掉),所以对于一个和为偶数子树的子树,可以选择切掉它或者不切掉它,根据乘法原理,这样可以贡献两倍的方案数,于是维护一下子树和然后上快速幂即可。
T2 曾经做过,但是现在没有思路了,遂 0。
正解直接在最短路的求解过程中顺带着转移一下即可。需要一点分类讨论,就是当最短路要被更新时继承,可以被平替时累加,这个看一下代码就会了。
T3 比较难想,直接放弃 0。首先这种看上去就很二维偏序,于是考虑把 \(\max\) 那个东西摁住(将边按边权排序即可)。现在的问题是怎么找出 \(1 \to n\) 的路径,然后维护最小值。如果弱化一下,只要找出 \(1 \to n\) 的路径,这种可达性问题,直接上并查集即可。现在要维护最小值,只要改造一下 merge 即可。
也就是说,我们的思路是:按照边权从小到大合并边,同时动态维护最小值,每当 \(1,n\) 可达(换言之,在同一集合内),就对当前边权加上当前最小值取 \(\min\) 即可。这样,排序保证了 \(\max\) 最小,而动态维护则保证了 \(\min\) 最小,本题得以解决。
T4 看到 \(10^4\) 本来想用暴力冲过去的,结果 wei 了 84。考虑在 DAG 上是好做的,如果只有一条链那么链尾的大小就是答案,否则没有答案。现在不好直接做,那么我们缩点成 DAG 不就行了?!
成绩:70+0+0+84=154/400,还混了个 rk1(笑点解析:只有 3 个人)。
总结:
-
T1 奇数偶数的题一定要在奇偶性上多思考。树上问题以子树为研究对象。
-
T2 求某种特定路径的个数直接在求这种路径的过程中 dp 即可。
-
T3 二维偏序先排序。并查集维护可达性问题。
-
T4 考虑弱化问题(如复杂图化为 DAG 等)。

浙公网安备 33010602011771号