这里没有 |

shihoghmean

园龄:1年8个月粉丝:2关注:0

奇怪的图题

7/10

Connected Components?

题意:

给定 n 个点的完全图,删去 m 条边,求剩下的连通块个数和大小。

n,m2×105

普通 bfs 的瓶颈是会遍历所有的边,已经染色放进连通块的点是绝不会对遍历有贡献,那么我们将所有点都塞进一个 queue 里,然后每次遍历这个队列,如果起点与终点间的边没被删就将终点染色并且将终点从队列里删除。

这是一个比较玄学的复杂度,不会证,但是过了

Complete the MST

题意:

给定一个有 n 个点、有边权的完全图,其中给定其中 m 条边的边权,让你给剩下n(n1)2m条边赋非负值,使所有边权的异或和为0,求最小的最小生成树边权和。

n2×105

显然,设给定边的异或和为 x ,那么肯定给其中 n(n1)2m1 条边赋值为 01条边赋值为 x
将为给定边权的边用Connected Components?的方式处理,设联通块数为 cnt ,那么:

  1. 如果 ncnt<n(n1)2m,意味着被选中的未给定边值一定为 0
  2. 如果 ncnt=n(n1)2m,意味着一开始全部的未给定边都被选中,和为 x

如果为 1 ,则直接用并查集加入给定边直到联通块只有一个。
如果为 2 ,则先用并查集加入给定边直到联通块只有一个,然后再在未被选中的给定边中寻找一条边使得:

1. 值小于 x

2. 能将一条未给定的边替换掉且保持联通。

具体做法再建一个并查集,只连选中的给定边,看能否联通未联通的两个联通块,因为初始选定的边保证已经联通,而此条边能换的边都是给定边,而去掉未给定边的图上不同联通块间一定有未给定边,能将其替换,且保证最小了生成树。

Cactus Wall

题意:

给定一个 n×m 的方格,每个格子都能种一个仙人掌,仙人掌不能在一个四联通上,已经有一些格子有仙人掌了,求能否将上下不联通(形成屏障)以及最优放置(数量最少)。

多测

t103

n,m2×105

n×m4×105

形成屏障可以转换成有一条从左侧到右侧只走斜对角的路径,那么只要建立超级源点和超级汇点,跑 dij 就行。

Keshi in Search of AmShZ

题意:

给定一个 n 个点的有向图,小 A1 ,小 Bn ,小 A 要由小 B 指挥走到 n 。小 B 可以花一点时间指挥小 A 随机走一条边或者删掉一条边,求最小的 t 值使经过 t 时间后小 A 一定在 n

n,m2×105

由于一个点到 n 点的最小代价由其后继决定,我们倒着考虑,设 fu 为从 un 的最小代价,那么有:

fu=minvnxtu(fv+Σpnxtu[fp>fv]+1)

dij 可以优化这个 dp ,因为 dij 每次取最小的 fv 出来,每次都把 du 减一就能维护 Σpnxtu[fp>fv] 了,而且取出的 fv 已经不会被再松弛了。

Phoenix and Odometers

本文作者:shihoghmean

本文链接:https://www.cnblogs.com/shihoghmean/p/17565428.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   shihoghmean  阅读(5)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起