atcoder ABC395 部分题解
E - Flip Edge
题意
给定有向图,边权均为 \(1\),可以随时翻转所有图的边的方向,每次花费 \(x\),求 \(1\) 到 \(n\) 的最短花费。
题解
之前看成单边翻转了。。
每个点拆成两个点,为原图和反转图,边 \((u,v)\) 即为原图的有向边 \((u,v)\) 和反转图的有向边 \((v,u)\)。
最后每个点到自己反转图的点连一个长度为 \(x\) 的双向边即可。
F - Smooth Occlusion
题意
给定 \(a_n,b_n\),每次操作选择一个 \(a_i\) 或者 \(b_i\) ,令其减 \(1\),最终保证 \(|a_i-a_{i+1}| \leq X\) 且 \(a_i+b_i\) 都相同,最小操作次数是多少。
题解
不考虑 \(X\) 的限制,我们确定一个最终的 \(H\) 为所有的 \(a_i+b_i\),这个 \(H\) 就是最小的 \(a_i+b_i\)。
当 \(H\) 减小时,我们的操作数会变大,但对 \(X\) 的限制就越宽松,我们可以二分这个 \(H\),检查时确定 \(i-1\) 的 \(a_i\) 能变成的区间 \([l_{i-1},r_{i-1}]\) ,那新的区间就是 \([l_{i-1}-x,r_{i-1}+x]\) 和 \([l_i,r_i]=[a_i-w,a_i]\) 的交区间,其中 \(w\) 是当前 \(H\) 下 \(a_i\) 最多能操作多少次。
G - Minimum Steiner Tree 2
题意
给定无向完全图,每次询问两点 \(u,v > K\) ,求保证使点 \(1,2 \cdots K, u,v\) 连通的最小子图边权和。
\(n \leq 80, Q \leq 5000, k \leq 8\) 。
题解
是最小斯坦纳树的小扩展,不了解的可以先学习一下。
如果每次询问都从头求斯坦纳树,复杂度为 \(O(Q 3^k)\) ,做不了。
\(n\) 很小,每个询问给定了两个额外点,我们尝试先求过一个额外点的斯坦纳树,再加入另一个点。
具体的,设 \(f_{u,rt,s}\) 为以 \(rt\) 为根下,包含 \(s \cup \{u\}\) 的点集的最小斯坦纳树,求出的这棵树保证 \(s,rt,u\) 这些点连通,我们直接连通 \(rt\) 到 \(v\) 的最短路就连接了 \(v\) 点,显然不同的 \(rt\) 代价不同,选择最小的 \(rt\) 即可。
\(u,v\) 是对称的,只枚举一个先选就行,复杂度 \(O(n3^n \log n+Qn)\),提前求出全源最短路,转移更方便。

浙公网安备 33010602011771号