7/10
Connected Components?
题意:
给定 \(n\) 个点的完全图,删去 \(m\) 条边,求剩下的连通块个数和大小。
$n,m\le 2\times10^{5} $
普通 \(bfs\) 的瓶颈是会遍历所有的边,已经染色放进连通块的点是绝不会对遍历有贡献,那么我们将所有点都塞进一个 \(queue\) 里,然后每次遍历这个队列,如果起点与终点间的边没被删就将终点染色并且将终点从队列里删除。
这是一个比较玄学的复杂度,不会证,但是过了
Complete the MST
题意:
给定一个有 \(n\) 个点、有边权的完全图,其中给定其中 \(m\) 条边的边权,让你给剩下$ \frac{n*(n-1)}{2} -m $条边赋非负值,使所有边权的异或和为0,求最小的最小生成树边权和。
$n\le 2\times10^{5} $
显然,设给定边的异或和为 \(x\) ,那么肯定给其中 \(\frac{n*(n-1)}{2} -m-1\) 条边赋值为 \(0\) ,\(1\)条边赋值为 \(x\) 。
将为给定边权的边用Connected Components?的方式处理,设联通块数为 \(cnt\) ,那么:
- 如果 \(n-cnt < \frac{n*(n-1)}{2} -m\),意味着被选中的未给定边值一定为 \(0\) 。
- 如果 \(n-cnt = \frac{n*(n-1)}{2} -m\),意味着一开始全部的未给定边都被选中,和为 \(x\) 。
如果为 \(1\) ,则直接用并查集加入给定边直到联通块只有一个。
如果为 \(2\) ,则先用并查集加入给定边直到联通块只有一个,然后再在未被选中的给定边中寻找一条边使得:
\(1.\) 值小于 \(x\)。
\(2.\) 能将一条未给定的边替换掉且保持联通。
具体做法再建一个并查集,只连选中的给定边,看能否联通未联通的两个联通块,因为初始选定的边保证已经联通,而此条边能换的边都是给定边,而去掉未给定边的图上不同联通块间一定有未给定边,能将其替换,且保证最小了生成树。
Cactus Wall
题意:
给定一个 \(n\times m\) 的方格,每个格子都能种一个仙人掌,仙人掌不能在一个四联通上,已经有一些格子有仙人掌了,求能否将上下不联通(形成屏障)以及最优放置(数量最少)。
多测
$t\le 10^{3} $
\(n,m \le 2 \times 10^{5}\)
\(n \times m \le 4 \times 10^{5}\)
形成屏障可以转换成有一条从左侧到右侧只走斜对角的路径,那么只要建立超级源点和超级汇点,跑 \(dij\) 就行。
Keshi in Search of AmShZ
题意:
给定一个 \(n\) 个点的有向图,小 \(A\) 在 \(1\) ,小 \(B\) 在 \(n\) ,小 \(A\) 要由小 \(B\) 指挥走到 \(n\) 。小 \(B\) 可以花一点时间指挥小 \(A\) 随机走一条边或者删掉一条边,求最小的 \(t\) 值使经过 \(t\) 时间后小 \(A\) 一定在 \(n\)。
\(n,m \le 2 \times 10^{5}\)
由于一个点到 \(n\) 点的最小代价由其后继决定,我们倒着考虑,设 \(f_{u}\) 为从 \(u\) 到 \(n\) 的最小代价,那么有:
\(f_{u} =\underset{v\in nxt_{u}}{min} (f_{v}+\underset{p\in nxt_{u}}{\Sigma}[f_{p}>f_{v}]+1 )\)
用 \(dij\) 可以优化这个 \(dp\) ,因为 \(dij\) 每次取最小的 \(f_{v}\) 出来,每次都把 \(d_{u}\) 减一就能维护 \(\underset{p\in nxt_{u}}{\Sigma}[f_{p}>f_{v}]\) 了,而且取出的 \(f_{v}\) 已经不会被再松弛了。
标签:图题,10,le,联通,times,定边,条边,奇怪 From: https://www.cnblogs.com/shihoghmean/p/17565428.html