bzoj1588:splay模版题

先看看,黄学长完美的代码

#include<iostream>
#include<cstdio>
#define inf 1000000000
using namespace std;
int ans,n,t1,t2,rt,size;
int tr[50001][2],fa[50001],num[50001];
void rotate(int x,int &k)
{int y=fa[x],z=fa[y],l,r;if(tr[y][0]==x)l=0;else l=1;r=l^1;if(y==k)k=x;else{if(tr[z][0]==y)tr[z][0]=x;else tr[z][1]=x;}fa[x]=z;fa[y]=x;fa[tr[x][r]]=y;tr[y][l]=tr[x][r];tr[x][r]=y;}
void splay(int x,int &k)
{int y,z;while(x!=k){y=fa[x],z=fa[y];if(y!=k){if((tr[y][0]==x)^(tr[z][0]==y))rotate(x,k);else rotate(y,k);}rotate(x,k);}
}
void ins(int &k,int x,int last)
{if(k==0){size++;k=size;num[k]=x;fa[k]=last;splay(k,rt);return;}if(x<num[k])ins(tr[k][0],x,k);else ins(tr[k][1],x,k);}
void ask_before(int k,int x)
{if(k==0)return;if(num[k]<=x){t1=num[k];ask_before(tr[k][1],x);}else ask_before(tr[k][0],x);}
void ask_after(int k,int x)
{if(k==0)return;if(num[k]>=x){t2=num[k];ask_after(tr[k][0],x);}else ask_after(tr[k][1],x);
}
int main()
{scanf("%d",&n);for(int i=1;i<=n;i++){int x;if(scanf("%d",&x)==EOF)x=0;t1=-inf;t2=inf;ask_before(rt,x);ask_after(rt,x);if(i!=1)ans+=min(x-t1,t2-x);else ans+=x;ins(rt,x,0);}printf("%d",ans);return 0;
}

好吧,就用这个模版了,把插入和旋转的那部分背过就可以,下面的插入比较好想

开学splay(这个模版要背的滚瓜烂熟)相关推荐

  1. 计算机知识点背诵了就忘了怎么办,背得滚瓜烂熟的知识点,为什么一上考场全忘了?这样做,事半功倍…...

    一年一度的高考正在紧张地进行着. 高考的第一天,1078万考生带着希望奔赴考场. 对于很多人来说,考试前,最头疼的就是记忆.背诵各种知识点了. 即便考前背得滚瓜烂熟,一上考场就忘了. 高考前是人生智商 ...

  2. 计算机知识太多了记不住,背得滚瓜烂熟的知识点 为什么一上考场全忘了?这样做事半功倍...

    本文专家:赵伟,天津大学泰达医院神经内科和睡眠医学中心副主任医师 今天,又迎来了一年一度的高考. 高考的第一天,1078万考生带着希望奔赴考场. 微博截图 对于很多人来说,考试前,最头疼的就是记忆.背 ...

  3. 计算机知识点背诵了就忘了怎么办,背得滚瓜烂熟的知识点 为什么一上考场全忘了?...

    又迎来了一年一度的高考.今年1000多万考生奔赴高考考场.对于考生来说,考场中知识点的发挥最重要了.但有时即便考前背得滚瓜烂熟,一上考场就忘了.今天,就来聊一聊关于记忆的科普知识. 为什么一上考场会忘 ...

  4. 破解基础----背的滚瓜烂熟差不多就会破解

    破解基础----背的滚瓜烂熟差不多就会破解 1)经典比较组合,常为注册码出现处(by programhunter)  1      mov  eax [      ]  这里可以是地址,也可以是其它寄 ...

  5. 网络拓扑七大类型:总线、环形、星形、网状、树形、点对点、混合,我背的滚瓜烂熟!

    大家好,这里是网络技术联盟站. 在网络世界中,经常会看到各种各样的网络拓扑,网络拓扑主要就是描述网络中各个元素的对应关系,那么网络中包含哪些类型的拓扑呢? 如上图所示,网络拓扑一般有两大类型: 物理拓 ...

  6. 转:传说中破解基础----背的滚瓜烂熟差不多就会破解

    1)经典比较组合,常为注册码出现处(by programhunter) 1     mov eax [      ] 这里可以是地址,也可以是其它寄存器     mov edx [      ] 同上 ...

  7. ubuntu安装sougoupinyin[sogoupinyin_2.2.0.0108_amd64.deb]出坑(内附各种失败解决办法)

    跨平台系列汇总:http://www.cnblogs.com/dunitian/p/4822808.html#linux Linux包系列的知识:https://www.cnblogs.com/dun ...

  8. 耶鲁女孩:改变,从背单词开始!(刘畅:我知道耶鲁会录取我的。学习,都要经历死记硬背)

    一名济南中学生与耶鲁大学的距离有多远?山东省实验中学刘畅用一颗善于思考的心给出了答案. 刘畅是省实验中学学生会主席.省学联副主席.高三(15)班班长,2009年暑假,刘畅自行报名参加了联合国青年大会. ...

  9. 耶鲁女孩刘畅教你循序渐进背单词

    本文转自小木虫论坛:http://emuch.net/bbs/viewthread.php?tid=6994668&fpage=2 你学习英语坚持多久了?学习成效怎么样?分享一下吧,一是给对方 ...

最新文章

  1. 消除危害 让BYOD策略更安全的几个秘诀
  2. 微服务架构如何保障双11狂欢下的99.99%高可用?
  3. python怎么安装包-Python-如何离线安装软件包?
  4. 由浅入深:自己动手开发模板引擎——置换型模板引擎(四)
  5. DMA双缓冲传输意义
  6. js隐藏打开项目隐藏编辑 和删除按钮
  7. Servlet——文件下载
  8. WinForm开发知识汇总
  9. 【前端小技能】ElementUI表格双击可编辑--开箱即用
  10. android卡在开机画面,请教:用迅为4412开发板开机时卡在Android静止画面
  11. H264解码器源码(Android 1.6 版)
  12. 八达岭长城和龙庆峡之游
  13. WXPY自动转发群消息
  14. 【人生如逆旅,我亦是行人】-半年总结
  15. 开展922绿色出行活动 加强城市绿色交通安全管理
  16. Silverlight 教程第二部分:使用布局管理 (木野狐译) 1
  17. overflow溢出处理
  18. Android接入第三方QQ登录
  19. Autofac for AutoMapper
  20. Xcode 14之大变化详细介绍

热门文章

  1. 红帽8搭建httpd
  2. Python编程代码规范(Google Style)
  3. [kpw] Kindle Paperwhite 升级到 5.6.5 后,kterm无法启动
  4. 在路上,走更远 ,我的2016
  5. XFTP连接服务器成功,传输文件失败解决方案
  6. xilinx 官方技术资料
  7. Nuist集训队专题:数论
  8. TF卡/SD卡/U盘容量“变小”的问题
  9. Delphi中关于DBGrid的DrawDataCell和DrawColumnCell的触发条件
  10. (12)RabbitMQ的TTL(消息有效期)和DLX(死信交换机/队列)