随笔分类 - 数据结构—并查集
摘要:读题两小时系列…… 在读懂题意之后,发现M(c)就是c这块最大权割边也就是的最小生成树的最大权边的权值,所以整个问题都可以在MST的过程中解决(M和c都是跟着并查集变的) 不过不是真的最小生成树,是合并了所有a[i].w include include include using namespace
阅读全文
摘要:如果没有环的话直接LCT 考虑有环怎么办,如果是静态的话就tarjan了,但是这里要动态的缩环 具体是link操作的时候看一下是否成环(两点已联通),成环的话就用并查集把这条链缩到一个点,把权值加给祖先,断开所有splay上儿子。不过父亲这里不用管,就先让他们连着 每次操作的时候都用并查集找到支配点
阅读全文
摘要:用SA求出height数组,然后发现每个height值都有一个贡献区间(因为点对之间要依次取min) 用单调栈处理出区间,第一问就做完了 然后用并查集维护每个点的贡献(?),从大到小枚举height,因为这样区间是不断增大的所以并查集合并即可 cpp include include include
阅读全文
摘要:満身創痍 ゲームオーバー
阅读全文
摘要:この夜よどうか明けないで
迷い道の晴れるまで
阅读全文
摘要:等于有传递性,所以hash一下把等于用并查集连起来,然后再判断不等于是否合法即可 cpp include include include include using namespace std; const int N=200005; int T,n,x,y,v,f[N],g[N],tot,has;
阅读全文
摘要:又犯了zz的错误…… 需要注意的是,被毁掉的星球是不算一个联通块的(可能只有我这么算吧= =) 离线下来时间倒流,就变成了向图里加星球,也就是用并查集维护联通,在用tot变量记录当前答案,每加一个星球就tot++,每合并一个联通块就tot 注意始终没有被毁掉的星球应该在时间倒流前就加进图里
阅读全文
摘要:我是zz吗这么简单都写错…… 一眼二分,然后判断的话是枚举点,然后计算这个点到已有联通块的最小距离,如果这个点到一些联通块的距离小于当前二分的val,则把这些联通块合并起来,这里用并查集维护,最后看这样得出的部落数是否大于k(多出来的可以直接合并) 有个非常小的优化就是不用double二分,直接把点
阅读全文
摘要:m是5000,就想到了直接枚举比例 具体做法是是先把边按照边权从小到大排序,然后先枚举最小边权,再枚举最大边权,就是从最小边权里一个一个加进并查集里,每次查st是否联通,联通则退出,更新答案
阅读全文
摘要:传送:http://poj.openjudge.cn/practice/C18D/ 依然是课件截图 cpp include include include include include using namespace std; const int N=405,mod=1e9+7,inf=2e9;
阅读全文
摘要:很有意思的题,~~所以还是截lyddalao的课件~~ cpp include include include using namespace std; const int N=6005; int T,n,f[N],s[N]; long long ans; struct qwe { int u,v,
阅读全文
摘要:二分答案,把边权小于mid的边的两端点都并起来,看最后是否只剩一个联通块
阅读全文
摘要:参考:http://hzwer.com/4361.html 坐标开long long,inf开大点 先曼哈顿转切比雪夫(x+y,x y),距离就变成了max(x',y'); 先按x排序,维护两个指针,指针内区间的x差总是 include include include using namespace
阅读全文
摘要:枚举从大到小s1,二分s2(越大越有可能符合),2 SAT判断,ans取min 思路倒是挺简单的,就是二分的时候出了比较诡异的问题,只能二分s2的值,不能在数组上二分... 有个优化,就是当不是二分图的时候退出枚举,这个用并查集染色维护 cpp include include include inc
阅读全文
摘要:参考:http://hzwer.com/6888.html 把k条道路权值设为0,和其他边一起跑MST,然后把此时选中的其他边设为必选,在新图中加上必选变缩成k个点,把所有边重标号,枚举k跳边的选取情况,和其他边做MST,建出树,k条边的权值在树上取min cpp include include i
阅读全文
摘要:画图可知,每一行的状态转移到下一行只有两种:奇数列不变,偶数列^1;偶数列不变,奇数列^1 所以同一行相邻的变革染色格子要放到同一个并查集里,表示这个联通块里的列是联动的 最后统计下联通块数(不包括第一行的这一列已经被染色的情况)快速幂一下即可。 cpp include include includ
阅读全文

浙公网安备 33010602011771号