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 中的边的贡献即可。

posted @ 2026-03-15 12:06  LoserBpds  阅读(11)  评论(0)    收藏  举报