Link - ShinriiTin's Blog - 博主是sb
Run
codeforces 442D Adam and Tree

Link

ShinriiTin posted @ 2015年6月15日 20:05 in 未分类 with tags 网络流 可持久化并查集 某不科学的三千元系列 , 593 阅读

题意:

有n(n<=20000)个小球,最开始都未被染色。

进行m(m<=20000)次操作,操作分为2种类型。

0.回到第x次操作的状态

1.将小球x和y所在的集合合并

然后进行k(k<=20000)次染色操作。

第i次染色操作将时间ti时xi所在连通块中最多zi个小球染色。

如果一个小球被染色了,那么任意时刻它都被染色了。

求最多能将多少小球染色。

 

分析:

很容易想到网络流的做法,但是一般的建图方法的点数和边数都无法接受。

考虑用可持久化的思想优化网络流建图。

首先处理连通性时我们会用到用主席树实现的可持久化并查集。

注意,这时不能使用路径压缩,要按秩合并来优化。

然后可以发现可持久化并查集就可以来优化建图了。

我们只考虑叶子。

S向最初版本的每个叶子连容量1的边。

每次更新时将历史版本向当前版本连容量为+∞的边;

合并时,向集合代表元连容量为+∞的边。

每次染色时,找到ti版本xi所在集合的代表元,向T连容量为zi的边。

然后跑最大流就行了。

 


登录 *


loading captcha image...
(输入验证码)
or Ctrl+Enter