LCT
Cyhlnj
这个作者很懒,什么都没留下…
展开
-
bzoj2157
LCT板子,打个lazy即可# include <stdio.h># include <stdlib.h># include <iostream># include <algorithm># include <string.h># include <map># define IL inline# define RG register# define Fill(a, b) memset原创 2017-12-17 20:19:25 · 194 阅读 · 0 评论 -
Bzoj3514: Codechef MARCH14 GERALD07加强版
题面传送门Sol首先每次加入边的两个点不联通,那么联通块的个数就要减1" role="presentation">111 那么考虑怎么做 莫名想到LCT" role="presentation">LCTLCTLCT 然后就不会了。。。 orz" role="presentation">orzorzorz题解 维护一个每条边的数组,如果这个点加入后形成环,那么就把这个数组设原创 2018-01-28 22:37:32 · 237 阅读 · 0 评论 -
Bzoj4817:[SDOI2017]树点涂色
题面BzojSol做个转化 最开始都是虚边 操作111就是LCTLCTLCT里的AccessAccessAccess操作 求的就是路径上虚边的个数+1然后就好办了 用树链剖分+线段树来维护每个点到根虚边的个数的最大值 操作111:AccessAccessAccess时虚实边的转换,要把原来连的点的SplaySplaySplay的最左边的点在原树中的子树所有点+1,再把...原创 2018-02-10 10:35:18 · 251 阅读 · 0 评论 -
UOJ207:共价大爷游长沙
题面UOJSol神题 给每个点对随机一个权值,把这两个点的权值异或上这个随机的值 用LCT" role="presentation" style="position: relative;">LCTLCTLCT维护子树信息,若子树异或和为所有点对的异或和那么就是答案大常数代码# include # define RG register# define IL inlin原创 2018-02-07 17:01:31 · 213 阅读 · 0 评论 -
LCT总结
LCT:类似于树链剖分吧我是这么认为的 要学会LCT首先你要先学会Splay及其区间翻转操作基础辅助树: ①Splay以深度为为关键字,维护每条链的信息(每条链一个splay) ②其根的父亲指向这条链的链顶的父亲 ③记住每次splay时要先从上往下下放lazy操作判断是否是根 Isroot(x):只要判断这个点x在splay上的根是否有它这个儿子即可(第...原创 2017-12-17 20:17:16 · 355 阅读 · 0 评论 -
Luogu4234:最小差值生成树
题面luoguSol好久没写LCTLCTLCT 然而写跪了TATTATTAT把边从小到大加入森林 如果形成环,就替换最小的边 如果已经是树,更新答案 LCTLCTLCT维护# include <bits/stdc++.h># define RG register# define IL inline# define Fill(a, b) mems...原创 2018-03-22 17:22:09 · 646 阅读 · 0 评论 -
Bzoj3510:首都
SolLCTLCTLCT动态维护树重心方法一因为只有加边,所以可以暴力启发式合并,维护重心 维护子树信息,子树大小不超过一半 复杂度两只logloglog方法二扣出两个重心的链,链上二分找 每次SplaySplaySplay重心,应该是一只logloglog的吧。。。# include <bits/stdc++.h># define RG registe...原创 2018-03-24 14:14:00 · 262 阅读 · 1 评论 -
SPOJ QTREE6
题意给你一棵nnn个点的树,编号111~nnn。每个点可以是黑色,可以是白色。初始时所有点都是黑色。有两种操作 0 u0 u0\ u:询问有多少个节点vvv满足路径uuu到vvv上所有节点(包括)都拥有相同的颜色 1 u1 u1\ u:翻转uuu的颜色SolLCTLCTLCT做法:黑白开两个LCTLCTLCT 然后有一个很Nai...原创 2018-03-25 17:23:56 · 223 阅读 · 0 评论 -
Bzoj5212: [Zjoi2018]历史
题面传送门Sol以下多数东西都是复制题解的 外省体验赛这题顺利获得了101010分的好成绩。。。显然是AccessAccessAccess操作,已知每个点AccessAccessAccess的次数,确定一种顺序,问轻重链切换次数的最大值 考虑iii处的切换次数,如果连续两次AccessAccessAccess在同一子树或者都是它自己,那么显然两次AccessAccessAc...原创 2018-03-31 08:04:39 · 398 阅读 · 0 评论 -
SPOJ QTREE7
题意一棵树,每个点初始有个点权和颜色 0 u0 u0 \ u :询问所有u,vu,vu,v 路径上的最大点权,要满足u,vu,vu,v 路径上所有点的颜色都相同 1 u1 u1 \ u :反转uuu 的颜色 2 u w2 u w2 \ u \ w :把uuu 的点权改成www colori∈[0,1],wi...原创 2018-03-26 19:32:44 · 244 阅读 · 0 评论 -
Bzoj4573: [Zjoi2016]大森林
题面传送门Sol我太菜了,有点思维的题根本不会sto HJTsto HJTsto \ HJT考虑一个111操作,相当于是l−1l−1l-1和lll处长节点的位置不同了 那么在l−1l−1l-1处长,然后接在lll就好了 rrr和r+1r+1r+1同理考虑怎么来做 虚点的思想 维护一个全局的树,上面有虚点和实点 每次000操作直接长实点lin...原创 2018-04-09 21:49:47 · 325 阅读 · 0 评论 -
【国家集训队2012】tree(伍一鸣)
题面传送门Sol这不是一道LCT模板题吗? 和线段树一样维护区间加法和乘法标记 记得要更新自己本身的权值 这种题就该一遍AC# include # define RG register# define IL inline# define Fill(a, b) memset(a, b, sizeof(a))# define Sqr(x) ((x) * (x))#原创 2018-01-18 22:09:56 · 239 阅读 · 0 评论 -
Luogu3613 睡觉困难综合征
luogu题面 这道题是NOI起床困难综合症改编而来的 思路是一样的 这道题我们考虑用LCT维护,每个节点维护两个值 一个为中序遍历这棵子树的ans0,ans1(分别表示0和INF(二进制下全为1)跑的答案) 另一个为中序遍历的反向遍历这棵子树的ans0,ans1 还要记得保存这个点的初始操作考虑合并,若知道的左边的f0,f1,右边的g0,g1,合并后的h0,h1 有原创 2017-12-30 09:01:05 · 298 阅读 · 0 评论 -
WC2006水管局长(加强)
倒过来就变成了加边 然后就直接LCT# include <stdio.h># include <stdlib.h># include <iostream># include <algorithm># include <string.h># define IL inline# define RG register# define Fill(a, b) memset(a, b, size原创 2017-12-17 20:23:34 · 221 阅读 · 0 评论 -
zjoi网络
map加LCT水一下就过了# include <stdio.h># include <stdlib.h># include <iostream># include <algorithm># include <string.h># include <map># define IL inline# define RG register# define Fill(a, b) memset(原创 2017-12-17 20:24:49 · 194 阅读 · 0 评论 -
洞穴探测
暴力建图后只有cut link操作 建个超级点 次数即size# include <stdio.h># include <stdlib.h># include <iostream># include <algorithm># include <string.h># define IL inline# define RG register# define Fuck(a) a > n原创 2017-12-17 20:26:40 · 289 阅读 · 0 评论 -
弹飞绵羊
LCT 暴力建图后只有cut link 建个超级点 次数即size# include <stdio.h># include <stdlib.h># include <iostream># include <algorithm># include <string.h># define IL inline# define RG register# define Fuck(a) a >原创 2017-12-17 20:29:31 · 175 阅读 · 0 评论 -
魔法森林
LCT a排序后做b的kruskal splay维护最大边的位置,若当前大,不加,否则cut,加边# include <stdio.h># include <stdlib.h># include <iostream># include <algorithm># include <string.h># define IL inline# define RG register# def原创 2017-12-17 20:31:25 · 348 阅读 · 0 评论 -
[THUWC 2017]在美妙的数学王国中畅游
bzoj5020题解Taylor展开式: 若f(x)的n阶导数在[a,b]内连续,则f(x)在x0∈[a,b]可表示为若f(x)的n阶导数在[a, b]内连续,则f(x)在x_{0}\in[a, b]可表示为f(x)=∑i=0nf(n)(x0)(x−x0)ii!+Θ((x−x0)n)f(x)=\sum_{i=0}^{n} \frac{ f^{(n)}(x_{0})(x-x_{0})^{i} }{i原创 2017-12-26 15:15:09 · 484 阅读 · 0 评论 -
BZOJ4530:[BJOI2014]大融合(LCT维护子树)
题面没有权限号的可以去LOJSol大家都知道,LCTLCT上有许多实边和虚边 实边就是每棵SplaySplay上的既认父亲又认儿子的边 虚边就是SplaySplay和SplaySplay之间只认父亲的的边 那么每个点就有它的虚儿子和实儿子,实际上虚儿子才是它在LCTLCT维护的树上的真正的儿子 当你Access(x)Access(x)时,xx的虚儿子加上它自己就是它原创 2018-01-22 15:36:18 · 442 阅读 · 0 评论 -
[COGS2701]:动态树
题面传送门SolLCT维护子树和# include # define IL inline# define RG register# define ls ch[0][x]# define rs ch[1][x]# define Fill(a, b) memset(a, b, sizeof(a))using namespace std;typedef long long原创 2018-01-22 16:42:04 · 363 阅读 · 0 评论 -
Bzoj2959: 长跑
题面传送门SolLCT+LCT+并查集维护双联通分量,每次加边x,yx,y,如果已经相连就把这条路径缩成一个点,赋上权值 LCTLCT调用fafa时一定要在并查集中findfind一下 细节很多,常数很大# include # define IL inline# define RG register# define ls ch[0][x]# define rs原创 2018-01-22 21:58:49 · 832 阅读 · 0 评论 -
[AH/HNOI2017]单旋
这道题可以用LCT做,开set,LCT,二叉树操作1:直接开set,找到它要插入的位置,一定是前驱,后缀中deep最大的(显然手玩)操作2:set+LCT询问路径,直接手动提上去,因为树的形态不变操作3:同2操作4:LCT::Cut,手动删除操作5:同4没了记得手动更新二叉树(这个一定要想清楚会又WA又TLE又RE n遍)# include <bits/stdc++.h># def原创 2017-12-30 10:30:20 · 312 阅读 · 0 评论 -
Bzoj2555: SubString
题面传送门Sol考虑求每个串在模板串中出现的次数 就在samsamsam上走就行了,因为它的每一条路径都是它的一个子串 走到最后一个点,若匹配,那么它的答案就是parentparentparent树的这个点的子树大小然后带修改就写个LCTLCTLCT维护parentparentparent树就好了 LCTLCTLCT维护子树信息,非常好写# include &amp;amp;amp;lt...原创 2018-04-23 19:18:42 · 270 阅读 · 0 评论