lct
SC.ldxcaicai
我很菜=_=
展开
-
2018.10.07 bzoj2049: [Sdoi2008]Cave 洞穴勘测(lct)
传送门这是笔者第一次写lct。这题操作比较少,就当是练习压行技巧了吧。然后学习lct时一定记住把原树和辅助树区别开来。代码:#include<bits/stdc++.h>#define N 10005using namespace std;inline int read(){ int ans=0; char ch=getchar(); while(!isdigit...原创 2018-10-07 11:29:16 · 156 阅读 · 0 评论 -
bzoj2959: 长跑(lct+并查集)
传送门思路:题目中的有向边并没有什么用。。。直接维护整张图的双联通分量的信息即可。用lctlctlct和两个并查集分别维护点和双联通块的信息。代码:#include<bits/stdc++.h>#define ri register intusing namespace std;const int rlen=1<<18|1;inline char gc()...原创 2019-06-26 17:10:33 · 144 阅读 · 0 评论 -
bzoj2555: SubString(sam+lct)
传送门题意简述:要求在线支持两个操作(1):在当前字符串的后面插入一个字符串(2):询问字符串s在当前字符串中出现了几次?(作为连续子串)思路:考虑用lctlctlct来动态维护samsamsam的rightrightright集合。代码:#include<bits/stdc++.h>#define ri register intusing namespace s...原创 2019-03-01 20:28:47 · 185 阅读 · 0 评论 -
2018.10.09 hdu5333 Undirected Graph(lct+bit)
传送门lct经典题。我们把询问按右端点排序。这样按照右端点值划分询问顺序每次只会加入同一个右端点值那么多的边。于是只需要处理左端点就行了。如何处理?对于不同的边(u,v)(u,v)(u,v),我们规定u&amp;amp;gt;vu&amp;amp;gt;vu&amp;gt;v,然后按照vvv排序。贪心处理。假设当前要加入一条边。加入后不会构成一个环,那么直接用lctlctlct来linklinklin...原创 2018-10-09 19:35:04 · 233 阅读 · 0 评论 -
2018.10.09 bzoj4817: [Sdoi2017]树点涂色(lct)
传送门其实这道题跟真正的lct关系不是很大。首先观察到操作1和accessaccessaccess操作很像,启示我们每次把相同颜色的看成一棵splaysplaysplay,那么最后路径uuu->vvv的权值就是路径上splaysplaysplay的数量。这样的话我们每个点iii维护一个111->iii的权值wiw_iwi。分类讨论一波之后会发现无论是什么情况路径uuu->...原创 2018-10-09 07:50:59 · 154 阅读 · 0 评论 -
2018.10.07 bzoj2631: tree(lct)
传送门lct经典题。貌似就是ahoi维护序列放到了lct上。就直接像线段树那样维护就行了。不过这个时候区间add时不再是:sum+=(r−l+1)∗vsum+=(r-l+1)*vsum+=(r−l+1)∗v了。而应该是:sum+=size∗vsum+=size*vsum+=size∗v,因为动态树是没有固定区间的。然后注意标记的下放以及处处取模什么的应该就能AC了吧。代码:#i...原创 2018-10-07 23:35:58 · 156 阅读 · 0 评论 -
2018.10.07 bzoj1180: [CROATIAN2009]OTOCI(lct)
传送门lct模板题。只是这一次变成了维护链上的和。代码:#include<bits/stdc++.h>#define N 30005using namespace std;inline int read(){ int ans=0; char ch=getchar(); while(!isdigit(ch))ch=getchar(); while(isdigit(c...原创 2018-10-07 20:47:49 · 143 阅读 · 1 评论 -
2018.10.07 bzoj3669: [Noi2014]魔法森林(lct)
传送门lct经典题。维护动态最小生成树。具体实现就是把边转化成一个带点权的点,其它的点变成不带点权的点,然后要加入一条边(u,v)(u,v)(u,v)的话,我们求出路径(u,v)(u,v)(u,v)上的最大值与该边的边权进行比较,如果替换更优的话就先断掉那条最大的边,然后连上这条边。代码:#include&lt;bits/stdc++.h&gt;#define N 100005#de...原创 2018-10-07 20:22:35 · 188 阅读 · 0 评论 -
2018.10.07 洛谷P3690 【模板】Link Cut Tree (lct)
传送门lct模板题。学习了新姿势:判断一条边是否已经存在的方法。感觉其它都差不多。代码:#include&amp;amp;amp;amp;lt;bits/stdc++.h&amp;amp;amp;amp;gt;#define N 300005using namespace std;inline int read(){ int ans=0; char ch=getchar(); while(!isdigit(ch))ch=getc原创 2018-10-07 18:03:20 · 146 阅读 · 0 评论 -
hdu4942 Game on S♂play(线段树)
传送门考虑到中序遍历是不变的。所以我们可以直接用线段树维护中序遍历的信息。当然也可以用splaysplaysplay维护前序遍历的信息。当然亦可以直接上LCTLCTLCT。 自闭警告注意多组数据记得要清零代码:#include<bits/stdc++.h>#define ri register intusing namespace std;const int rle...原创 2019-08-05 21:51:39 · 142 阅读 · 0 评论