
并查集
新笑雨
这个作者很懒,什么都没留下…
展开
-
luogu 5787
题目链接解法线段树分治:首先对于动态加边,并且维护图是否是二分图,可以使用带权并查集,一个点拆成两个,分别表示这个点染黑色还是白色。每次加边维护并查集就可以了。然后对于这个题,就是把每条边出现的时间对应到线段树上的区间,在每个线段树节点上用一个vector维护时间段和该节点有交的边。最后一次dfs处理所有边:进入一个节点后,先把所有边加入并查集,如果不是二分图,那么整个节点一定不是二分图。...原创 2020-03-21 16:10:51 · 164 阅读 · 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 · 238 阅读 · 0 评论 -
[APIO2019]桥梁
题目链接(luogu上现在这个题时限非常紧,题解区的代码也不一定能过)题意:有一张n个点,m条边的无向图,然后每条边有权值;有两种操作:1 将一条边的权值修改.2 询问从某个点开始,只允许进过大于给定权值的边,最多可以到达几个点.解法首先考虑如果没有修改操作,应该怎么做:显然可以把询问离线下来,并按给定的权值从大到小排序,然后用并查集维护答案.如果有操作呢?我们也延续上面的思路,...原创 2020-01-02 19:42:59 · 290 阅读 · 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 · 231 阅读 · 0 评论 -
可持久化并查集备忘
luogu 3402主要要理解深度的变化,因为是把深度较小的并查集合并到深度较大的上(这里的深度指的是并查集内最深的一个点的深度),所以只有当两个并查集深度相同的时候,较大的并查集的深度才会发生改变.注意没有路径压缩,然后主要的是主席树维护每个时刻并查集的fa数组#include<bits/stdc++.h>using namespace std;const int maxn...原创 2019-12-27 11:30:26 · 89 阅读 · 0 评论