lct
SC.ldxcaicai
我很菜=_=
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
2018.10.07 bzoj2049: [Sdoi2008]Cave 洞穴勘测(lct)
传送门 这是笔者第一次写lct。 这题操作比较少,就当是练习压行技巧了吧。 然后学习lct时一定记住把原树和辅助树区别开来。 代码: #include<bits/stdc++.h> #define N 10005 using namespace std; inline int read(){ int ans=0; char ch=getchar(); while(!isdigit...原创 2018-10-07 11:29:16 · 228 阅读 · 0 评论 -
bzoj2959: 长跑(lct+并查集)
传送门 思路:题目中的有向边并没有什么用。。。 直接维护整张图的双联通分量的信息即可。 用lctlctlct和两个并查集分别维护点和双联通块的信息。 代码: #include<bits/stdc++.h> #define ri register int using namespace std; const int rlen=1<<18|1; inline char gc()...原创 2019-06-26 17:10:33 · 218 阅读 · 0 评论 -
bzoj2555: SubString(sam+lct)
传送门 题意简述: 要求在线支持两个操作 (1):在当前字符串的后面插入一个字符串 (2):询问字符串s在当前字符串中出现了几次?(作为连续子串) 思路: 考虑用lctlctlct来动态维护samsamsam的rightrightright集合。 代码: #include<bits/stdc++.h> #define ri register int using namespace s...原创 2019-03-01 20:28:47 · 247 阅读 · 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 · 298 阅读 · 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 · 207 阅读 · 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 · 226 阅读 · 0 评论 -
2018.10.07 bzoj1180: [CROATIAN2009]OTOCI(lct)
传送门 lct模板题。 只是这一次变成了维护链上的和。 代码: #include<bits/stdc++.h> #define N 30005 using 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 · 190 阅读 · 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 · 257 阅读 · 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 300005 using namespace std; inline int read(){ int ans=0; char ch=getchar(); while(!isdigit(ch))ch=getc原创 2018-10-07 18:03:20 · 204 阅读 · 0 评论 -
hdu4942 Game on S♂play(线段树)
传送门 考虑到中序遍历是不变的。 所以我们可以直接用线段树维护中序遍历的信息。 当然也可以用splaysplaysplay维护前序遍历的信息。 当然亦可以直接上LCTLCTLCT。 自闭警告 注意多组数据记得要清零 代码: #include<bits/stdc++.h> #define ri register int using namespace std; const int rle...原创 2019-08-05 21:51:39 · 206 阅读 · 0 评论
分享