Link Cut Tree
Hillan_
An OIer From ZJ
展开
-
BZOJ2049: [Sdoi2008]Cave 洞穴勘测
动态树 LCT 过得 由于是无根树我们需要换根,换根时打个标记表示需要旋转然后就好了原创 2015-11-24 18:53:37 · 530 阅读 · 0 评论 -
BZOJ2843: 极地旅行社
裸LCT#include<cstdio> #include<cstring> #include<cstdlib> using namespace std;struct Node { Node *lc,*rc,*f; int data; int sum; bool Rev; Node *pl; inline bool h(){return f->lc==this||原创 2016-02-12 14:20:42 · 476 阅读 · 0 评论 -
BZOJ3069: [Pa2011]Hard Choice 艰难的选择
很好的一道LCT的题目 虽然能马上发现时LCT但是这个性质起码我是画了个图。。。 要处在同一个强联通分量里的点才有两条不重合路径 那么很容易想出来只需要离线每次加边同时缩点就好了 然后只需要打个并查集维护一下当前点被缩成哪个点就好了 我第一次LCT的并查集忘了更新了#include<cstdio> #include<iostream> #include<cstring> #include<原创 2016-03-04 15:21:23 · 820 阅读 · 0 评论 -
BZOJ3669: [Noi2014]魔法森林
LCT 一开始自己脑子抽用节点的权值表示连向父亲的边的长度 后来发现不能拿来搞翻转 然后看了别人的题解 发现居然可以新开一个点。。。。 药丸 之后又调试了一天 最后听了度教的话 重打。。 发现好像是自己的Access打跪了。。。。 完了。。。。一天只调好一道题。。。。 去死吧 ! #include #include #include #include #include us原创 2016-02-20 18:07:29 · 335 阅读 · 0 评论 -
BZOJ3514: Codechef MARCH14 GERALD07加强版
主席树+LCT 每次加边的时候判断一下是否成环 如果没有就加进去否则弹出环内比序号最小边 然后统计答案#include<cstdio> #include<iostream> #include<cstring> #include<cstdlib> #include<cmath> using namespace std;char c; inline void read(int &a) {原创 2016-02-28 11:36:20 · 580 阅读 · 0 评论 -
Hackerrank How many substrings
好难啊QAQ 今天又去想了一下 然后向敦爷求证了一下 发现思路还是对的代码太难实现了。。 LCT维护last并在Segment Tree上更新。。。 感觉自己被日死了 最后看着板子打了一发。。 先离线 考虑每个串在最后出现的开始位置有贡献 然后就是一个区间加 区间减的操作 在Access的时候更新线段树 时间复杂度O(nlognlogn)O(nlognlogn)你看800+sub原创 2017-02-16 20:40:51 · 711 阅读 · 0 评论