
启发式合并
SC.ldxcaicai
我很菜=_=
展开
-
2018.08.28 codeforces600E(dsu on tree)
传送门 一道烂大街的dsu on tree板题。 感觉挺有趣的^_^ 代码真心简单啊! 就是先处理轻儿子,然后处理重儿子,其中处理轻儿子后需要手动消除影响。 代码:#include<bits/stdc++.h>#define N 100005#define ll long longusing namespace std;inline int read(){ ...原创 2018-08-28 17:05:39 · 151 阅读 · 0 评论 -
2018.08.21 bzoj4668: 冷战(并查集+启发式合并)
传送门 可以发现需要维护连通性和两点连通时间。 前者显然是并查集的常规操作,关键就在于如何维护两点的连通时间。 然后会想到这个时候不能用路径压缩了,因为它会破坏原本树形集合的结构,因此可以启发式按size合并。 代码:#include<bits/stdc++.h>#define N 500005using namespace std;int n,m,fa[N],l...原创 2018-08-21 22:05:36 · 507 阅读 · 0 评论 -
2018.10.14 loj#516. DP 一般看规律(启发式合并)
传送门注意到一种颜色改了之后就不能改回去了。因此可以启发式合并。每次把小的合并给大的。这样每个数最多被合并logloglog次。如果维护一棵比较下标的平衡树的话,对于答案有贡献的就是每个数与前驱和后继的差值。于是就用setsetset实现啦。代码:#include<bits/stdc++.h>#define N 100005using namespace std;...原创 2018-10-14 21:20:10 · 199 阅读 · 0 评论 -
bzoj3473: 字符串(后缀自动机+启发式合并)
传送门调代码调的我怀疑人生。启发式合并用迭代写怎么都跑不过(雾换成了dfsdfsdfs版本的终于过了233.题意简述:求给出nnn个字串,对于每个给定的字串求出其有多少个字串在至少kkk个剩下字串中出现过。显然先对所有字串建一个samsamsam出来,然后对于每个状态用一个setsetset维护在哪些字串里面出现过(这个显然需要在建完parentparentparent树之后启发式合并...原创 2018-12-22 14:23:22 · 405 阅读 · 0 评论 -
bzoj3277: 串(后缀自动机+启发式合并)
传送门跟这道题是一模一样的。于是本蒟蒻又写了一遍10min1A庆祝代码:#include<bits/stdc++.h>#define ri register intusing namespace std;const int N=2e5+5;typedef long long ll;int T,k;string s[N];struct SAM{ int last,...原创 2018-12-22 16:51:11 · 345 阅读 · 0 评论 -
bzoj2333: [SCOI2011]棘手的操作(启发式合并)
传送门启发式合并菜题。题意:支持与连通块有关的几种操作。要求支持连边,单点修改,连通块修改,全局修改和单点查值,连通块查最大值和全局最大值。我们对每个连通块和答案用可删堆维护最大值,然后用启发式合并来解决连边的问题。关键在于连通块修改,这个可以给每个连通块维护一个标记,然后在合并的时候每个数记得修改值就行了。代码#include<bits/stdc++.h>#defi...原创 2019-01-17 16:04:04 · 232 阅读 · 0 评论