随笔分类 -  【Link Cut Tree】

【SPOJ】6779 Can you answer these queries VII
摘要:SPOJ……无力吐槽了,反正RP好的时候过了,其他时候都是TLE。只能怪自己动态树太龊了吧。。 1 #include<cstdio> 2 #include<cstring> 3 #include<queue> 4 #include<iostream> 5 #define MAX(a,b) ((a)>(b)?(a):(b)) 6 #define oo 0x7FFFFFFF 7 #define MAXN 200010 8 using namespace std; 9 bool vis[MAXN]; 10 int e, first[MAXN], 阅读全文
posted @ 2012-08-30 00:10 DrunBee 阅读(637) 评论(0) 推荐(0)
【总结】动态树
摘要:0、BFS将无根树转化为有根树。1、bef[x]=y。表示x的父亲是y。这样建树构成了一片森林。2、Access(x)。表示以x为起点,一直到根节点,构造出一条链。这条链用splay维护,可以很好的支持插入和删除操作。这条链只有根节点与原树有联系。3、Splay(x)。同伸展树,用于维护提取出的链。通过splay操作,使得均摊logn。4、MakeRoot(x)。表示把x节点设为根。一棵树根的变化,仅与x到根的路径有关,即把路径反向即可。因此相当于把x到根的链翻转,bef构成的森林不变。A、操作1:link,操作2:cut。【HDU】2475 BoxB、路径中单点更新/成段更新/查询。(其实这 阅读全文
posted @ 2012-08-26 23:39 DrunBee 阅读(3506) 评论(0) 推荐(0)
【HDU】4010 Query on The Trees
摘要:1 #include<cstdio> 2 #include<cstring> 3 #include<queue> 4 #include<iostream> 5 #include<algorithm> 6 #define MAXN 300010 7 #define MAXM 600010 8 #define CLEAR(a,b) memset(a,b,sizeof(a)) 9 using namespace std; 10 int first[MAXN], next[MAXM], v[MAXM], e; 11 bool vis[MAXN 阅读全文
posted @ 2012-08-26 22:45 DrunBee 阅读(1004) 评论(0) 推荐(0)
【SPOJ】2798 Query on a tree again!
摘要:1 #include<cstdio> 2 #include<cstring> 3 #include<iostream> 4 #include<queue> 5 #define MAXN 100100 6 #define MAXM 200100 7 using namespace std; 8 bool vis[MAXN]; 9 int e, first[MAXN], next[MAXM], v[MAXM]; 10 struct LCT { 11 int bef[MAXN]; 12 int next[MAXN][2], pre[MAXN], key 阅读全文
posted @ 2012-08-25 18:01 DrunBee 阅读(436) 评论(0) 推荐(0)
【SPOJ】913 Query on a tree II
摘要:1 #include<cstdio> 2 #include<cstring> 3 #include<queue> 4 #include<iostream> 5 #define MAXN 10010 6 #define MAXM 20010 7 using namespace std; 8 struct LCT { 9 int bef[MAXN]; 10 int next[MAXN][2], pre[MAXN], key[MAXN], sum[MAXN], num[MAXN]; 11 void Init() { 12 memset(ne... 阅读全文
posted @ 2012-08-25 15:02 DrunBee 阅读(613) 评论(1) 推荐(0)
【POJ】2763 Housewife Wind
摘要:1 #include<cstdio> 2 #include<cstring> 3 #include<queue> 4 #include<iostream> 5 #define MAXN 100010 6 #define MAXM 200010 7 using namespace std; 8 struct LCT { 9 int bef[MAXN], belong[MAXN]; 10 int next[MAXN][2], pre[MAXN], key[MAXN], sum[MAXN]; 11 void Init() { 12 mems... 阅读全文
posted @ 2012-08-23 22:40 DrunBee 阅读(545) 评论(0) 推荐(0)
【HDU】3966 Aragorn's Story
摘要:1 #include<cstdio> 2 #include<cstring> 3 #include<queue> 4 #include<iostream> 5 #define MAXN 50010 6 #define MAXM 100010 7 using namespace std; 8 struct LCT { 9 int bef[MAXN]; 10 int next[MAXN][2], pre[MAXN], key[MAXN], add[MAXN]; 11 void Init() { 12 memset(next, 0, siz... 阅读全文
posted @ 2012-08-23 22:07 DrunBee 阅读(497) 评论(0) 推荐(0)
【POJ】3237 Tree
摘要:1 #include<cstdio> 2 #include<cstring> 3 #include<queue> 4 #include<iostream> 5 #include<algorithm> 6 #define MAXN 100010 7 #define MAXM 200010 8 #define oo 0x7FFFFFFF 9 using namespace std; 10 bool vis[MAXN]; 11 int first[MAXN], next[MAXM], v[MAXM], cost[MAXM], e; 12 s 阅读全文
posted @ 2012-08-23 21:40 DrunBee 阅读(720) 评论(0) 推荐(0)
【CodeForces】191C Fools and Roads
摘要:1 #include<cstdio> 2 #include<cstring> 3 #include<iostream> 4 #include<queue> 5 #define MAXN 100010 6 #define MAXM 200010 7 using namespace std; 8 int first[MAXN], next[MAXM], v[MAXM], e; 9 bool vis[MAXN]; 10 struct LCT { 11 int bef[MAXN], belong[MAXN]; 12 int next[MAXN][2], 阅读全文
posted @ 2012-08-23 11:17 DrunBee 阅读(642) 评论(0) 推荐(0)
【URAL】1553 Caves and Tunnels
摘要:1 #include<cstdio> 2 #include<cstring> 3 #include<queue> 4 #include<iostream> 5 #include<algorithm> 6 #define MAXN 100010 7 #define MAXM 200010 8 using namespace std; 9 bool vis[MAXN]; 10 int first[MAXN], second[MAXM], v[MAXM], e; 11 struct LCT { 12 int bef[MAXN]; 13 in 阅读全文
posted @ 2012-08-23 02:39 DrunBee 阅读(426) 评论(0) 推荐(0)
【HYSBZ】1036 树的统计Count
摘要:1 #include<cstdio> 2 #include<cstring> 3 #include<queue> 4 #include<iostream> 5 #include<algorithm> 6 #define oo 0x7FFFFFFF 7 #define MAXN 30010 8 #define MAXM 60010 9 using namespace std; 10 int first[MAXN], next[MAXM], v[MAXM], e; 11 bool vis[MAXN]; 12 struct LCT { 13 阅读全文
posted @ 2012-08-23 01:28 DrunBee 阅读(416) 评论(0) 推荐(0)
【HYSBZ】2002 Bounce 弹飞绵羊
摘要:1 #include<cstdio> 2 #include<cstring> 3 #include<iostream> 4 #define MAXN 200010 5 using namespace std; 6 struct LCT { 7 int bef[MAXN]; 8 int next[MAXN][2], pre[MAXN], key[MAXN], sum[MAXN]; 9 void Init() { 10 memset(next, 0, sizeof(next)); 11 memset(pre, 0, siz... 阅读全文
posted @ 2012-08-22 19:58 DrunBee 阅读(822) 评论(0) 推荐(0)
【FOJ】2082 过路费
摘要:1 #include<cstdio> 2 #include<cstring> 3 #include<queue> 4 #include<iostream> 5 #define MAXN 50010 6 #define MAXM 100010 7 using namespace std; 8 int first[MAXN], next[MAXM], v[MAXM], cost[MAXM], e; 9 bool vis[MAXN]; 10 struct LCT { 11 int bef[MAXN], belong[MAXN]; 12 int next 阅读全文
posted @ 2012-08-22 10:47 DrunBee 阅读(413) 评论(0) 推荐(0)
【SPOJ】375 Query on a tree
摘要:1 #include<cstdio> 2 #include<cstring> 3 #include<queue> 4 #include<iostream> 5 #include<algorithm> 6 #define MAXN 10010 7 #define MAXM 20010 8 #define oo 0x7FFFFFFF 9 using namespace std; 10 int first[MAXN], next[MAXM], v[MAXM], cost[MAXM], e; 11 bool vis[MAXN]; 12 str 阅读全文
posted @ 2012-08-22 02:00 DrunBee 阅读(537) 评论(0) 推荐(0)
【HDU】2475 Box
摘要:Splay: 1 #include<cstdio> 2 #include<cstring> 3 #define MAXN 100010 4 int first[MAXN], next[MAXN], v[MAXN], e; 5 int seq[MAXN], cnt; 6 int n; 7 bool vis[MAXN]; 8 struct SplayTree { 9 int root; 10 int next[MAXN][2], pre[MAXN]; 11 void Init() { 12 pre[0] = next[0][0] = nex... 阅读全文
posted @ 2012-08-21 22:35 DrunBee 阅读(1155) 评论(0) 推荐(0)