struct Splay{
int rt,sz; ///根节点,树节点总数
int va[N],son[N][],fa[N];///值,左右儿子,父亲
void spin(int t){ ///旋转操作
int x=fa[t], f=fa[x], y=son[x][]==t;
son[x][y]=son[t][y^], fa[son[x][y]]=x;
son[t][y^]=x, fa[x]=t, fa[t]=f;
if(f) son[f][son[f][]==x]=t;
}
void play(int x){ /// splay操作
for(int i;i=fa[x];spin(x))
if(fa[i])
spin((x==son[i][])==(i==son[fa[i]][])?i:x);
rt=x;
}
void ins(int v){///插入元素
int y,x=rt;
while(){
y=son[x][va[x]<v];
if(!y){
y=++sz, va[y]=v, fa[y]=x;
son[y][]=son[y][]=;
son[x][va[x]<v]=y;
break;
}
x=y;
}play(y);
}
int suc(){ ///找后继
int x=rt,y=son[x][];
while(son[y][])y=son[y][];
return va[y];
}
int pre(){ ///找前驱
int x=rt,y=son[x][];
while(son[y][])y=son[y][];
return va[y];
}
void init(int x){ ///初始化,需要初始值
sz=rt=;va[rt]=x;
fa[]=son[][]=son[][]=;
}
}splay;

最新文章

  1. “安装项目” Step By Step
  2. [经验]Textbox 做日志记录,
  3. MBTI-性格测试
  4. tabbar底部标题和子控制器标题为什么会保持一致?
  5. 设计模式之美:Chain of Responsibility(职责链)
  6. ubuntu安装QQ目前最完善的方法!(亲测,成功)
  7. ASP.NET MVC 4应用程序文件夹
  8. 决策树及其python实现
  9. Swift自定义Class实现Hashable
  10. 用jQuery写了一个模态框插件
  11. Unity3D的SerializeField 序列化域名
  12. CNN详解
  13. Python处理json字符串转化为字典
  14. abp中文件下载,将内存数据导出到Excel并下载
  15. UI设计---&gt;全心全意为人民服务的宗旨----&gt;注重客户体验---&gt;软件持久的生命力
  16. 如何快速地开发一个微信小程序
  17. Apache 修改端口号
  18. (转)HIBERNATE与 MYBATIS的对比
  19. mfc CListCtrl
  20. 转载:C++中两个类中互相包含对方对象的指针问题

热门文章

  1. Hive shell 命令
  2. 百度地图Api进阶教程-基础地图示例1.html
  3. java-动态获取项目根路径
  4. ruby send respond_to
  5. link_to和其对应要跳转的的url,用path和直接路由方法
  6. 在jsp页面比较时间的大小
  7. thinkphp 自动跟新时间
  8. selenium测试(Java)--下拉框(二十一)
  9. e684. 以多种格式打印
  10. 图像处理之3d算法----2d转3d算法介绍