atcoder ABC395 部分题解

E - Flip Edge

题意

给定有向图,边权均为 1,可以随时翻转所有图的边的方向,每次花费 x,求 1n 的最短花费。

题解

之前看成单边翻转了。。

每个点拆成两个点,为原图和反转图,边 (u,v) 即为原图的有向边 (u,v) 和反转图的有向边 (v,u)

最后每个点到自己反转图的点连一个长度为 x 的双向边即可。

参考代码

F - Smooth Occlusion

题意

给定 an,bn,每次操作选择一个 ai 或者 bi ,令其减 1,最终保证 |aiai+1|Xai+bi 都相同,最小操作次数是多少。

题解

不考虑 X 的限制,我们确定一个最终的 H 为所有的 ai+bi,这个 H 就是最小的 ai+bi

H 减小时,我们的操作数会变大,但对 X 的限制就越宽松,我们可以二分这个 H,检查时确定 i1ai 能变成的区间 [li1,ri1] ,那新的区间就是 [li1x,ri1+x][li,ri]=[aiw,ai] 的交区间,其中 w 是当前 Hai 最多能操作多少次。

参考代码

G - Minimum Steiner Tree 2

题意

给定无向完全图,每次询问两点 u,v>K ,求保证使点 1,2K,u,v 连通的最小子图边权和。

n80,Q5000,k8

题解

是最小斯坦纳树的小扩展,不了解的可以先学习一下。

如果每次询问都从头求斯坦纳树,复杂度为 O(Q3k) ,做不了。

n 很小,每个询问给定了两个额外点,我们尝试先求过一个额外点的斯坦纳树,再加入另一个点。

具体的,设 fu,rt,s 为以 rt 为根下,包含 s{u} 的点集的最小斯坦纳树,求出的这棵树保证 s,rt,u 这些点连通,我们直接连通 rtv 的最短路就连接了 v 点,显然不同的 rt 代价不同,选择最小的 rt 即可。

u,v 是对称的,只枚举一个先选就行,复杂度 O(n3nlogn+Qn),提前求出全源最短路,转移更方便。

参考代码

posted @   蒻蒻虫  阅读(15)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端
点击右上角即可分享
微信分享提示