这里是rotate和splay函数void rotate(int x){ int y=pre[x],z=pre[y],d=ch[y][0]==x; ch[y][d^1]=ch[x][d];pre[ch[x][d]]=y; ch[z][ch[z][1]==y]=x;pre[x]=z;...
分类:
其他好文 时间:
2015-06-06 12:03:11
阅读次数:
112
我的LCC,LCT,Splay格式终于统一起来了。。。另外。。这个形式的Splay是标准的Splay(怎么鉴别呢?看Splay函数是否只传了一个变量node就行),刘汝佳小白书的Splay写的真是不想吐槽了,局限性太大,别学。。。好了我要去写维修数列了。。。。。标准Splay模板: 1 #incl....
分类:
其他好文 时间:
2015-05-30 16:31:12
阅读次数:
181
题目大意:给定一棵树,初始每个点都有一个颜色,支持三种操作:
1.将某个点到根的路径上所有点染上一种新的颜色
2.将某个点到根的路径上所有点染上一种新的颜色,然后把根设为这个点
3.定义一个点的代价为这个点到根路径上颜色的种类数,求某个点子树中所有点代价的平均值我真是炖了狗了……
容易发现这玩应就是个LCT,操作1就是Access,操作2就是Move_To_Root,代价就是一个点到根路径上...
分类:
其他好文 时间:
2015-05-22 19:17:20
阅读次数:
168
这道题有这样一个解法:首先把边依次加到图中,若当前这条边与图中的边形成了环,那么把这个环中最早加进来的边弹出去并将每条边把哪条边弹了出去记录下来:ntr[i] = j,特别地,要是没有弹出边,ntr[i] = 0;这个显然是可以用LCT来弄的对吧。然后对于每个询问,我们的答案就是对l~r中ntr小于...
分类:
其他好文 时间:
2015-05-22 14:54:00
阅读次数:
106
善良的王学长竟然亲自打了一遍QAQ好感动QAQ 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #define PAU putchar(' ') 8 #define ENT putchar('\n...
分类:
其他好文 时间:
2015-05-19 00:25:36
阅读次数:
278
题目大意:给定n个点,支持以下操作:
1.在某两个点之间连接一条无向边
2.改变某个点的权值
3.将每条边设定一个方向,然后从xx走到yy,求能经过的所有点的权值和
首先如果这个图是静态的,我们把边双都缩点,那么每次询问显然就是两个点所在边双路径上的点权和
现在图是动态的,因此我们用动态树维护一下就行了
如果连边的两个点不连通,就在LCT中连接这两个点
如果连边的两个点已经连通,就将这...
分类:
其他好文 时间:
2015-05-15 12:11:36
阅读次数:
168
大概题意:给一个无向图,有a,b两种边权,找一条从1到n的路径,使得max(a[i])+max(b[i])最小a[i],b[i]表示该路径上的边的对应权。如果用类似最短路的DP来做,显然每个点的状态就必须是一个集合,保存的是一个下凸的点集,表示到达这个点的最小的a,b,这样肯定会挂,但该该种做法已经...
分类:
其他好文 时间:
2015-05-14 00:46:26
阅读次数:
213
要打mul和add的lct50000+的mod用unsigned int好了TAT(坑爹没打pc('\n');(静态)调了好久,样例竟然只输出一个,orz,也不提示PE T_T) 1 #include 2 #include 3 #include 4 #include 5 #include ...
分类:
其他好文 时间:
2015-05-12 01:36:49
阅读次数:
160
lct入门题?只需要Link Cut,不需要换根和维护其他标记 1 #include 2 #include 3 #include 4 #include 5 #include 6 using namespace std; 7 8 const int Maxn = 200010; ...
分类:
其他好文 时间:
2015-05-12 01:26:30
阅读次数:
97
lct入门题?得换根了吧TAT这大概不是很成熟的版本.. 1 #include 2 #include 3 #include 4 #include 5 #include 6 using namespace std; 7 8 const int Maxn = 10010; 9 10...
分类:
其他好文 时间:
2015-05-12 01:21:04
阅读次数:
117