
LCT
make_it_for_good
这个作者很懒,什么都没留下…
展开
-
bzoj 2555 SubString 后缀自动机 LCT
如果只有查询,那么建一个后缀自动机,建完后扫一遍求每个点子树里的叶节点个数(right集合大小)。 然后查询就从根开始走trs指针。不过这题还有在串后补字符的操作,加字符时维护子树叶节点个数如果直接往上修改就变成O(n2)O(n^2) 的了。(听说加了一组数据。。。) 由于每次修改都是单点或是一条链,因此可以用LCT维护父亲的关系和一个点子树中叶子个数。#include <bits/stdc++原创 2016-10-20 17:58:49 · 290 阅读 · 0 评论 -
bzoj 1453 双面棋盘 LCT 并查集
把每个格子看成点,同色格子之间连边。 LCT维护关于删除时间的最大生成树。 设有x1个原来与当前格子同色的连通块与当前格子断开,x2个原来与当前格子不同色的连通块与当前格子连通,那么会增加x1-1个当前格子原来颜色的连通块,减少x2-1个当前格子现在颜色的连通块。 写得比较挫,初始状态用的并查集。。。#include <bits/stdc++.h> using namespace std; #原创 2016-12-24 15:05:54 · 372 阅读 · 0 评论 -
bzoj 2759 一个动态树好题 LCT 数学
果然是一道动态树好题。 《论LCT的正确使用方法》以及《出题人真会玩》系列把每个点向p连一条边,那么这是一个基环树森林。 先从环上拆下来一条边并记录这条边指向的点,然后这玩意就变成了一坨有根树。 设根为x1,根指向的点为x2,那么所有点都可以用关于x2的一次函数表示。然后用x2本身的一次函数可以解出x2。 然后用LCT维护这坨有根树。 splay上每个点维护用这个点子树中最小(最靠左,原树原创 2016-12-26 11:27:25 · 552 阅读 · 0 评论