LCT
Chester_King
虽千万人,吾往矣。
展开
-
【洛谷】3690 【模板】Link Cut Tree (动态树)
题目传送门一道迟到的模板题。话说在思路清晰的时候敲代码真的爽啊。修改操作可以先访问该节点,然后把它旋转到根,这样只用修改这一个点的权值就好了。询问操作可以把其中一个节点搞成根,然后两点间的权值就变成了另一个节点到根的权值了。这两个想法挺妙。附上AC代码:#include #include #include using namespace std;const i原创 2018-01-07 20:20:43 · 241 阅读 · 0 评论 -
【BZOJ】2002 [Hnoi2010]Bounce 弹飞绵羊 LCT
题目传送门这题的想法挺好的。至少我想不到。考虑每个点向它弹到的点连边,如果在当前点被弹飞,就和n+1n+1号点连边。然后发现这样的建图形成了一棵树,修改操作可以看成删边+加边。一个节点的答案就是该节点到n+1n+1号节点的路径长度-1。附上AC代码:#include #include #include using namespace std;const int N原创 2018-01-07 20:21:04 · 275 阅读 · 0 评论 -
【BZOJ】1036 [ZJOI2008]树的统计Count 树链剖分
题目传送门这题还是树链剖分,并没有什么较大的改动,只是由于先前的手贱,现在打程序谨慎了很多,这一题一次就AC了。这题和上一题相比,只是多了一个树上两点的路径和查询,这一点在洛谷的树链剖分模板就体现了。给定两个节点,每次选取深度较大的一个节点沿着该节点所在的重链向上爬,并用线段树统计答案。当两个节点已经在同一重链上时,再用线段树统计一次两点间的答案就行了。这就是统计两个节点间的所有节原创 2017-05-14 20:08:04 · 273 阅读 · 0 评论 -
【BZOJ】2843 极地旅行社 LCT
题目传送门这题啊,又是一道LCT的裸题,大致上和洛谷的模板差不多吧,直接切掉就好了。附上AC代码:#include #include #include using namespace std;const int N=2e5+10;int n,a[N],m,ch[N][2],f[N],mk[N],sz[N],o,x,y;inline char nc(void){原创 2018-01-08 20:51:42 · 198 阅读 · 0 评论 -
【BZOJ】3669 [Noi2014]魔法森林 kruskal+LCT
题目传送门一句话题意:求一条路径,使得max(ai)+max(bi)max(a_i)+max(b_i)最小。输出这个最小值。还是ZZK最强了,一眼就秒掉了这道题。首先我们把所有的边按aia_i排序,从前往后加入边,显然当前的边是最大的aia_i,我们只需要用LCT维护一个从1到n路径上的max(bi)max(b_i)就行了。不过LCT好像没法处理边权,那么我们可以换一种建LCT的方原创 2018-01-09 18:58:01 · 201 阅读 · 0 评论 -
【BZOJ】2049 [Sdoi2008]Cave 洞穴勘测 LCT
题目传送门好吧,有些时候不能盲目地相信板子——LCT的splay和普通的splay有区别的……我就是因为直接copy板子而一直TLE,还不知道哪里错……直接给出ZZK的blog,还是ZZK最强啦!!!总之LCT的最核心的操作就是access,把一棵树分成很多实链,每条实链对应一棵splay,然后处理两个点之间的关系(连接与断开)就变成了splay的操作。至于时间复杂度,好像也是原创 2018-01-07 15:49:48 · 190 阅读 · 0 评论