码迷,mamicode.com
首页 > 其他好文 > 详细

Splay模板

时间:2015-03-04 22:23:02      阅读:160      评论: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
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!