lct
lushanlushan0026
退役acmer,准研究生
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
P5385 [Cnoi2019]须臾幻境 LCT+主席树 维护区间联通块个数
题意很简单:给n个条边 m条边 每一次给一个询问 l,r 问区间l~r的边构成的图的联通块个数因为是不断加边 所以我们的lct肯定是维护边的 然后我们思考边和联通块的关系 一开始整个图是n个孤立的点 联通块的数目为n 当我们加入第一条边的时候 联通块数目-1 规律大概是 联通块数=n-边数 但是在构成环的时候就不成立了 例如 图中有 u,v 这样的一条链 u~v的点都是属于一个联通块 那么我如果加入一条边 使得u连上v 那么对联通块的减少是没有贡...原创 2020-07-16 09:47:13 · 496 阅读 · 0 评论 -
P2173 [ZJOI2012]网络 维护多个LCT
一开始对题意的理解有些问题 2条件显然限制了从(u,v)的颜色为c的路径只能有一条 因为颜色数很少 只有10 于是我们想到一个很暴力的方法 就是 维护c颗LCT 分别对应c种颜色 然后进行对应的操作就行了#include<bits/stdc++.h>using namespace std;const int N = 1e5+10;#define lc c[x][0]#define rc c[x][1]#define R register int #defi...原创 2020-07-12 20:01:51 · 154 阅读 · 0 评论 -
P4230 连环病原体 LCT+双指针
双指针确实是个好东西 不能说是一种明确的算法 但是是很重要的思想 比如有名的尺取法 也是一种双指针的思想 双指针一般是利用单调性 来大幅度减少枚举的复杂度 这里就不深入了对于 加强区间 我们枚举左端点L 然后看右端点R 一个显然易见的性质是 如果 [L,R] 是加强区间 那么 [L,R] ,[L,R+1],[L,R+2],,,,,[L,m] 都是加强区间 因此对于每一个左端点L 我们枚举R 如果L,R 是加强区间 那么就有 m-R+1个加强区间 (统计数目会用到前...原创 2020-07-11 08:56:07 · 239 阅读 · 0 评论 -
团体赛训练 NEERC2014 Southern Sub
这套题可做题挺多的,而且有几个构造和模拟题 一些不可做题和无聊的题就没补了A - Nasta Rabbara因为我是dser 赛后唯一补的题 当时比赛的时候没读懂,看没什么人过也放弃了 确实有点麻烦的题 但是很有意思题意:给出n个点,m条边,q个询问 每个询问给一个区间l,r 问区间l,r内的边是否能构成二分图一般像这种动态加边删边的,就想到lct了 不过并没想到什么处理区间问题的好方法看了题解才知道:求出所有的最小的可以构成奇环的区间 看询问的区间是否包含至少一个这...原创 2020-06-11 17:25:29 · 240 阅读 · 0 评论 -
P5787 二分图 /线段树分治 或 lct
没有奇环的图就是二分图,所以我们要想办法去维护一个图里面有没有二分图。线段树分治的做法:以时间建立线段树,对于每一条边的出现与消失时间,我们通过区间更新把这条边挂在线段树的结点上,最后对线段树进行一次遍历。搜索的时候加边,回溯撤销边。用扩展域并查集判断是否为二分图,因为要撤销边,所以并查集得是可撤销的,并且不能路径压缩,同时为了保证复杂度必须按秩合并。并查集判断二分图的方法是 对于每一条加入的边 (u,v) 如果u,v已经联通 那么不是二分图,否则合并(u,v+n),(v,u+n)整个复杂度 .原创 2020-06-11 09:01:47 · 228 阅读 · 0 评论 -
[USACO18FEB]New Barns P lct维护树的直径
树的直径,通俗点讲就是树中两个距离最远的点。在做此题之前我们需要证明一个结论,那就是一棵树里面和某个点x距离最远的点一定是树的直径的端点。也就是说如果路径(u,v)是树的直径,那么距离x最远的点要么是u,要么是v我们来证明一下:1.x在路径(u,v)上假设 y是距离x最远的点 那么 则 因为x在u,v上所以得到 与(u,v)是树的直径的定义相矛盾2.x不在路径(u,v)上同样假设y是距离x最远的点 且y和路径(u,v)的最近点为b那么有...原创 2020-06-04 13:19:18 · 626 阅读 · 0 评论 -
P2387 [NOI2014]魔法森林 lct维护链路
题目描述为了得到书法大家的真传,小 E 同学下定决心去拜访住在魔法森林中的隐士。魔法森林可以被看成一个包含nn个节点mm条边的无向图,节点标号为1,2,3,…,n1,2,3,…,n,边标号为1,2,3,…,m1,2,3,…,m。初始时小 E 同学在11号节点,隐士则住在nn号节点。小 E 需要通过这一片魔法森林,才能够拜访到隐士。魔法森林中居住了一些妖怪。每当有人经过一条边的时候,这条边上的妖怪 就会对其发起攻击。幸运的是,在11号节点住着两种守护精灵:A 型守护精灵与 B...原创 2020-06-03 11:31:47 · 184 阅读 · 0 评论 -
[WC2006]水管局长 lct维护最小生成树
题目背景SC 省 MY 市有着庞大的地下水管网络,嘟嘟是 MY 市的水管局长(就是管水管的啦)。题目描述每天供水公司可能要将一定量的水从uu处送往vv处,嘟嘟需要为供水公司找到一条从uu至vv的水管的路径,接着通过信息化的控制中心通知路径上的水管进入准备送水状态,等到路径上每一条水管都准备好了,供水公司就可以开始送水了。嘟嘟一次只能处理一项送水任务,等到当前的送水任务完成了,才能处理下一项。在处理每项送水任务之前,路径上的水管都要进行一系列的准备操作,如清洗、消毒等等。嘟嘟...原创 2020-06-02 20:58:24 · 369 阅读 · 0 评论 -
洛谷P1501 [国家集训队]Tree II lct维护
lct维护一些基本的树链信息 注意的地方是要类似线段树一样 先维护乘标记 再维护加标记另外修改树链 u,v的信息时 把u,v 分(split)出来 要在最后被splay上来的那个点修改才能保证正确性#include<bits/stdc++.h>#define R register int#define I inline void#define lc c[x][0]#define rc c[x][1]#define ml(x) x*=c;x%=mod#define al(.原创 2020-06-01 09:38:07 · 230 阅读 · 0 评论 -
[BJOI2014]大融合 lct维护虚子树大小
lct在动态连边和删边方面比较有优势,但是在维护子树信息方面又没有树链剖分那么方便。这道题算是lct维护虚子树信息比较裸的一道题。以s[]数组为总的子树大小,sx[]数组为虚子树大小。要维护虚子树信息 在lct原来的模板上有三个地方需要改。pushup函数:总子树大小显然是实子树大小+虚子树大小I pushup(R x){ s[x]=s[lc]+s[rc]+sx[x]+1;}access函数:在进行access的过程,x的虚子树产生了变化,本来是y,后来变成了x现在的右儿子。...原创 2020-05-30 22:28:57 · 271 阅读 · 0 评论 -
[HNOI2010]弹飞绵羊 lct维护siz
最近开始回顾lct和splay之类的东西了,学了的东西好容易忘记啊这题算是比较经典的题目吧,把i和i+a[i]连成一棵树,如果i+a[i]>n,就把i和n+1连起来,表示跑到了终点 对于1操作 1 x把链x,n+1拉出来 询问大小siz 答案就是siz-1(包含了n+1这个虚点)对于2操作 2 xy 把x和x+a[x](或n+1) 断开 更新a[x] 再把x和x+a[x](或n+1)连上为了方便下标改成了从1开始#include<bits/stdc++....原创 2020-05-29 14:42:01 · 176 阅读 · 0 评论
分享