LCT
里阿奴摩西
这个作者很懒,什么都没留下…
展开
-
[动态树 LCT] BZOJ 2594 [Wc2006]水管局长数据加强版
动态树模板题最开始加边用Kruskal比较快,不用LCT,然后再用LCT维护最小生成树话说这道题小数据范围的正解是什么....PS:以前LCT的求根都是打错的,没有pushdown()#include#include#include#include#includeusing namespace std;typedef pair abcd;inline cha原创 2016-04-04 12:08:58 · 2774 阅读 · 0 评论 -
[LCT || splay维护括号序列] BZOJ 4573 [Zjoi2016]大森林
题解爸爸戳这里splay维护括号序实在不敢尝试 建虚点LCT 还是很资瓷的哇 正如dls所说的 小清新数据结构 注意的是求两点距离 不能直接拉出那条链 而是要求LCA 然后我发现我不会求LCA了#include<cstdio>#include<cstdlib>#include<algorithm>#include<stack>using namespace std;inline ch原创 2017-03-21 23:37:50 · 727 阅读 · 0 评论 -
[最小极差生成树 LCT || 二分答案 CDQ分治 并查集] Ural 2055 Urban Geography
把边按权值大小排序 然后用LCT按时间维护下最大生成树 就好了#include<cstdio>#include<cstdlib>#include<algorithm>#include<stack>#include<set>using namespace std;inline char nc(){ static char buf[100000],*p1=buf,*p2=buf;原创 2017-03-04 09:28:23 · 792 阅读 · 0 评论 -
[LCT 主席树] BZOJ 3514 Codechef MARCH14 GERALD07加强版
N个点M条边的无向图,询问保留图中编号在[l,r]的边的时候图中的联通块个数。 先预处理 按时间做一通最大生成树 每次加边 ii 替换树上的最小边 记这条边为 a[i]a[i] 特殊的 如果本来不连通 a[i]=0a[i]=0 如果是自环 a[i]=ia[i]=i对于每个询问[l,r][l,r],统计区间[l,r][l,r]中有多少个数小于ll,用nn去减即可得答案 为什么呢 因为替换了原创 2017-01-31 18:40:27 · 444 阅读 · 0 评论 -
[LCT 动态最大生成树] HDU 5398 GCD Tree
一个数肯定是和自己约数连更优那么就是动态维护最小生成树两个log#include #include #include #include#include#include using namespace std; typedef pair abcd;typedef long long ll; inline char nc(){ static原创 2016-12-19 20:27:17 · 511 阅读 · 0 评论 -
[后缀自动机 LCT] BZOJ 2555 SubString
构建后缀自动机 parent树会改变形态 这样|right(x)|也会发生变化 我们用LCT大力维护一发就好了#include<cstdio>#include<cstdlib>#include<cstring>#include<algorithm>using namespace std;inline char nc(){ static char buf[100000],*p1=buf,原创 2017-01-28 21:26:09 · 370 阅读 · 0 评论 -
[Splay模拟 线段树 || Splay || LCT] HDU 4942 Game on S♂play
做法颇多算法一形式化地描述要进行什么操作。旋转节点:link/cut 。更改两个点的子树和:单点修改。询问一个点子树内子树和的积:子树询问。可以在LCT上维护轻儿子信息(小Toptree),这样就可以子树询问了。轻重边切换的时候顺便维护这个。复杂度O(n log n),期望得分70 - 100分。算法二子树询问的是积,具有可减性。可以转化原创 2016-07-16 17:57:19 · 714 阅读 · 0 评论 -
[LCT 树状数组] HDU 5333 Undirected Graph
这个题跟 [LCT 主席树] BZOJ 3514 Codechef MARCH14 GERALD07加强版有异曲同工之妙 考虑询问按右端点排序 对于一条边 边的权值定义为较小的一端的编号 那么显然权值大的边更有利 对于每个右端点 我们加入所有新增的边 维护最大生成树 询问么 就是n-生成树中编号大于等于左端点 因为这样的边会把两个联通块连在一起#include<cstdio>#原创 2017-02-07 16:37:28 · 371 阅读 · 0 评论 -
[LCT维护最小生成树 || CDQ分治 || 线段树 并查集 dfs树] Codeforces 603E #334 (Div. 1) E. Pastoral Oddities
这是个好题啊 这种数据结构题和dfs树有什么关系呢 唯一的关系就是一个联通块当且仅当有偶数个点时能满足存在边集的一个子集每个点度数为奇数或者更一般的结论 当一个联通块中每个点的度数奇偶性要求之和是偶数 那么存在然后我们就转化为一些边使得每个联通块为偶数这个出题人的标算我没看懂啊 LCT在线维护最小生成树?http://codeforces.com/blog/entry/21原创 2017-01-04 16:45:31 · 1348 阅读 · 0 评论 -
[LCT 边双连通分量缩点] BZOJ 2959 长跑
一个边双连通分量肯定可以定向成一个环 那么就缩点每次连接 要是本来不连通 就连起来连通的话就把树上路径全缩起来询问就是树上路径的值#include #include #include #include #include #include using namespace std; typedef pair abcd; typ原创 2016-12-23 16:04:26 · 567 阅读 · 0 评论 -
[一类维护形态树和值树的LCT] BZOJ 3159 决战
直接上题解吧 有空去看看那篇集训队论文#include#include#include#include#define dprintf(...) fprintf(stderr,__VA_ARGS__)using namespace std;typedef long long ll;inline char nc(){ static char buf[100原创 2016-09-02 21:36:05 · 835 阅读 · 0 评论 -
[一类子树修改的LCT] Tsin 1506 Missing On The Tree
调了我一晚上想法很好:http://ezreal-dn.com/archives/124但是因为我作死 实现细节按照自己的习惯搞搞搞 结果WA到爆炸总算是调出来了#include#include#includeusing namespace std;inline char nc(){ static char buf[100000],*p1=buf,*p2=buf;原创 2016-08-30 21:28:13 · 469 阅读 · 0 评论 -
[LCT || 分块] IOI 2011 Elephants
分块做法 fhq OrzLCT做法 rzz Orz#include#include#include#include#includeusing namespace std;typedef pair abcd;inline char nc(){ static char buf[100000],*p1=buf,*p2=buf; i原创 2016-07-07 22:04:00 · 598 阅读 · 0 评论 -
[LCT 线性模方程] BZOJ 2759 一个动态树好题 & 4266 小强的动态方程
%%%PoPoQQQ:http://blog.csdn.net/popoqqq/article/details/40436165“题目大意:给定n个形如xi=ki*x_pi+bi mod p的同余方程组 支持修改操作和求解操作确实好题 感谢此题作者 顺便吐槽一下作者的Splay不加空节点太蛋疼了0.0将每个点i的父亲设为pi 我们将会得到一座基环树林 将环上的一条边原创 2016-04-07 18:40:35 · 655 阅读 · 0 评论 -
[CDQ分治 并查集 || LCT] BZOJ 4025 二分图
Po姐的姿势:http://blog.csdn.net/popoqqq/article/details/45671813LCT的做法:考虑随便维护一个图的生成树,不难发现,如果一条边加入后,形成奇环的话就不是二分图否则的话,我们可以无视这条边,因为如果之后再新加入一条边和这条边形成了一个奇环那么新加入的边一定和原来生成树上的边也能形成奇环所以我们直接维护一棵生成树即原创 2016-05-02 13:36:57 · 564 阅读 · 0 评论 -
[LCT 线段树 dfs序] BZOJ 3779 重组病毒
%%%PoPoQQQ http://blog.csdn.net/popoqqq/article/details/45919545”题目大意:给定一棵树,初始每个点都有一个颜色,支持三种操作: 1.将某个点到根的路径上所有点染上一种新的颜色 2.将某个点到根的路径上所有点染上一种新的颜色,然后把根设为这个点 3.定义一个点的代价为这个点到根路径上颜色的种类数,求某个点子树中所有点原创 2016-04-30 14:05:07 · 748 阅读 · 0 评论 -
[LCT 组合 期望] BZOJ 3091 城市旅行
%%%PoPoQQQ:http://blog.csdn.net/popoqqq/article/details/40823659第四个操作怎么办?!做过2752就好了#include#include#include#define V G[p].vusing namespace std;typedef long long ll;inline char nc(){ s原创 2016-04-27 19:40:52 · 443 阅读 · 0 评论 -
[动态树 LCT] BZOJ 2157 旅游
动态树裸题把边建成一个点就好了取反,打个标记#include#include#include#includeusing namespace std;inline char nc(){ static char buf[100000],*p1=buf,*p2=buf; if (p1==p2) { p2=(p1=buf)+fread(buf,1,100000,stdin);原创 2016-04-04 13:24:12 · 638 阅读 · 0 评论 -
[LCT] BZOJ 4817 [Sdoi2017]树点涂色
怎么萎事啊 sdoi怎么有这么多原题 看着这么眼熟 就是我们发现这个染色就是LCT上一个access的过程 而一个点到根路径的颜色数就是到根虚边数加1 这个我们可以access的时候顺便在线段树上子树修改下 而两个点之间的路径颜色数就是加一加再减去lca的两倍然后再加1 那个加1是指lca所属的颜色 子树最大值 直接线段树上查咯#include<cstdio>#include<cst原创 2017-05-03 21:33:18 · 535 阅读 · 0 评论