2026-3
P9433 [NAPC-#1] Stage5 - Conveyors
对于关键点整体遍历的操作,容易想到合并成连通块。记录两点间的距离为 \(dist\),走一遍连通块(即为连通块的边权和)的代价为 \(sum\)。
- 若在连通块内,代价为 \(2\times sum - dist\)。
- 若在连通块外,跳到最近的连通块的代价 \(cost_1\) 与 \(cost_2\),代价即为 \(2\times sum - dist + cost1 + cost2\)。
对于第二种情况,一种简便的实现是令连通块的一个点为根,则对于每个非连通块点,向上跳若干次即可,并不需要考虑向下跳。可以 \(log_2 n\) 倍增实现。
MX P130501 B.tree
输麻了,以为是数数,赛时一直在考虑刻画每个点的奇偶状态,实际上确实做不到。
警示我们:难以刻画的状态不一定有用,有些情况下每种状态的权值是类似的。
从 DFS 生成树的角度考虑,我们记 \(a_1 \sim a_n\),\(a_i = 0/1\) 表示第 \(i\) 个节点的奇偶性。
考虑构造一组合法方案。事实上所有 \(a_i\) 的取值都可以取到,因为从生成树,从下往上考虑,根据钦定的儿子的奇偶性,来对比目前的奇偶性,若不符则可以翻转其到父亲的边;并且对于根节点,从奇数点的个数一定为偶数上考虑,其一定是合法的。
同样,对于不在生成树内的边,每一种的选取方案均可以通过上述构造,满足 奇数的点的个数。于是每种方案个数相同,系数为 \(2^{b - a + 1}\)。最后乘上组合系数。
MX P130502 C.graph
思考如何刻画状态。这其实很套路,但是我没想到。
每个局面,看做拆分数的形式。注意到 \(40\) 以内的拆分数,数量级为 \(3 \times 10^4 \sim 4 \times 10^4\),完全可以记录。
然后模仿 Kruskal 的加边形式,每次 \(O(n^2)\) 枚举新增的边,同时乘上始终不在 MST 中的边的贡献即可。

浙公网安备 33010602011771号