![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
并查集
新笑雨
这个作者很懒,什么都没留下…
展开
-
luogu 5787
题目链接 解法 线段树分治: 首先对于动态加边,并且维护图是否是二分图,可以使用带权并查集,一个点拆成两个,分别表示这个点染黑色还是白色。每次加边维护并查集就可以了。 然后对于这个题,就是把每条边出现的时间对应到线段树上的区间,在每个线段树节点上用一个vector维护时间段和该节点有交的边。最后一次dfs处理所有边:进入一个节点后,先把所有边加入并查集,如果不是二分图,那么整个节点一定不是二分图。...原创 2020-03-21 16:10:51 · 142 阅读 · 0 评论 -
codeforces 1290C
题目链接 题意 有一个长度为n的01字符串和m个子集,保证任意3个子集∩为空,问将长度从1到n的字符串前缀全部变成1的最小步数,其中每一步可以做的事情是选择一个子集,将这些位置上的字符全部取反。保证可以将整个字符串变成全1状态 数据范围 n,m≤3e5n,m \le 3e5n,m≤3e5 解法 首先观察到,任意3个子集的交为空说明任意一个位置只会最多在两个子集中出现,所以对于一个位置,如果它出现在...原创 2020-02-03 18:50:33 · 213 阅读 · 0 评论 -
[APIO2019]桥梁
题目链接 (luogu上现在这个题时限非常紧,题解区的代码也不一定能过) 题意: 有一张n个点,m条边的无向图,然后每条边有权值;有两种操作: 1 将一条边的权值修改. 2 询问从某个点开始,只允许进过大于给定权值的边,最多可以到达几个点. 解法 首先考虑如果没有修改操作,应该怎么做: 显然可以把询问离线下来,并按给定的权值从大到小排序,然后用并查集维护答案. 如果有操作呢?我们也延续上面的思路,...原创 2020-01-02 19:42:59 · 260 阅读 · 0 评论 -
loj 6198
题目链接 题意 给了一个字符串,字符串每个位置有一个权值wiwiwi.定义字符串的两个后缀i,ji,ji,j的价值为LCP(i,j)+LCP(i,j)+LCP(i,j)+ wiwiwi xor wjwjwj 求最大价值 解法 首先分开考虑:对于LCP(i,j)LCP(i,j)LCP(i,j),可以先求出sa,和height,然后是[i,j]的区间min. 对于 wiwiwi xor wjwjwj ...原创 2019-12-27 16:01:31 · 203 阅读 · 0 评论 -
可持久化并查集备忘
luogu 3402 主要要理解深度的变化,因为是把深度较小的并查集合并到深度较大的上(这里的深度指的是并查集内最深的一个点的深度),所以只有当两个并查集深度相同的时候,较大的并查集的深度才会发生改变. 注意没有路径压缩,然后主要的是主席树维护每个时刻并查集的fa数组 #include<bits/stdc++.h> using namespace std; const int maxn...原创 2019-12-27 11:30:26 · 70 阅读 · 0 评论