首页 > 其他 > 详细

Splay模板

时间:2015-03-04 22:22:15      阅读:168      评论:0      收藏:0      [点我收藏+]

改自学长的代码

 1 #define mx 100010
 2 int f[mx], c[mx][2], s[mx];
 3 inline void up (int x)
 4 {
 5     s[x] = s[c[x][0]] + s[c[x][1]] + 1;
 6 }
 7 inline int rotate (int i)
 8 {
 9     int fa = f[i], d = c[fa][1] == i;
10     f[i] = f[fa], fa > 0 ? c[f[fa]][c[f[fa]][1] == fa] = i : 0;
11     (c[fa][d] = c[i][!d]) ? f[c[i][!d]] = fa : 0;
12     up (c[f[fa] = i][!d] = fa);
13     return i;
14 }
15 inline void splay (int i)
16 {
17     for (int fa = f[i]; fa; fa = f[rotate (i)])
18         f[fa] ? rotate (c[fa][1] == i ^ c[f[fa]][1] == fa ? i : fa): 0;
19     up (i);
20 }

 

Splay模板

原文:http://www.cnblogs.com/lightning34/p/4314320.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!