开学splay(这个模版要背的滚瓜烂熟)
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(这个模版要背的滚瓜烂熟)相关推荐
- 计算机知识点背诵了就忘了怎么办,背得滚瓜烂熟的知识点,为什么一上考场全忘了?这样做,事半功倍…...
一年一度的高考正在紧张地进行着. 高考的第一天,1078万考生带着希望奔赴考场. 对于很多人来说,考试前,最头疼的就是记忆.背诵各种知识点了. 即便考前背得滚瓜烂熟,一上考场就忘了. 高考前是人生智商 ...
- 计算机知识太多了记不住,背得滚瓜烂熟的知识点 为什么一上考场全忘了?这样做事半功倍...
本文专家:赵伟,天津大学泰达医院神经内科和睡眠医学中心副主任医师 今天,又迎来了一年一度的高考. 高考的第一天,1078万考生带着希望奔赴考场. 微博截图 对于很多人来说,考试前,最头疼的就是记忆.背 ...
- 计算机知识点背诵了就忘了怎么办,背得滚瓜烂熟的知识点 为什么一上考场全忘了?...
又迎来了一年一度的高考.今年1000多万考生奔赴高考考场.对于考生来说,考场中知识点的发挥最重要了.但有时即便考前背得滚瓜烂熟,一上考场就忘了.今天,就来聊一聊关于记忆的科普知识. 为什么一上考场会忘 ...
- 破解基础----背的滚瓜烂熟差不多就会破解
破解基础----背的滚瓜烂熟差不多就会破解 1)经典比较组合,常为注册码出现处(by programhunter) 1 mov eax [ ] 这里可以是地址,也可以是其它寄 ...
- 网络拓扑七大类型:总线、环形、星形、网状、树形、点对点、混合,我背的滚瓜烂熟!
大家好,这里是网络技术联盟站. 在网络世界中,经常会看到各种各样的网络拓扑,网络拓扑主要就是描述网络中各个元素的对应关系,那么网络中包含哪些类型的拓扑呢? 如上图所示,网络拓扑一般有两大类型: 物理拓 ...
- 转:传说中破解基础----背的滚瓜烂熟差不多就会破解
1)经典比较组合,常为注册码出现处(by programhunter) 1 mov eax [ ] 这里可以是地址,也可以是其它寄存器 mov edx [ ] 同上 ...
- ubuntu安装sougoupinyin[sogoupinyin_2.2.0.0108_amd64.deb]出坑(内附各种失败解决办法)
跨平台系列汇总:http://www.cnblogs.com/dunitian/p/4822808.html#linux Linux包系列的知识:https://www.cnblogs.com/dun ...
- 耶鲁女孩:改变,从背单词开始!(刘畅:我知道耶鲁会录取我的。学习,都要经历死记硬背)
一名济南中学生与耶鲁大学的距离有多远?山东省实验中学刘畅用一颗善于思考的心给出了答案. 刘畅是省实验中学学生会主席.省学联副主席.高三(15)班班长,2009年暑假,刘畅自行报名参加了联合国青年大会. ...
- 耶鲁女孩刘畅教你循序渐进背单词
本文转自小木虫论坛:http://emuch.net/bbs/viewthread.php?tid=6994668&fpage=2 你学习英语坚持多久了?学习成效怎么样?分享一下吧,一是给对方 ...
最新文章
- 消除危害 让BYOD策略更安全的几个秘诀
- 微服务架构如何保障双11狂欢下的99.99%高可用?
- python怎么安装包-Python-如何离线安装软件包?
- 由浅入深:自己动手开发模板引擎——置换型模板引擎(四)
- DMA双缓冲传输意义
- js隐藏打开项目隐藏编辑 和删除按钮
- Servlet——文件下载
- WinForm开发知识汇总
- 【前端小技能】ElementUI表格双击可编辑--开箱即用
- android卡在开机画面,请教:用迅为4412开发板开机时卡在Android静止画面
- H264解码器源码(Android 1.6 版)
- 八达岭长城和龙庆峡之游
- WXPY自动转发群消息
- 【人生如逆旅,我亦是行人】-半年总结
- 开展922绿色出行活动 加强城市绿色交通安全管理
- Silverlight 教程第二部分:使用布局管理 (木野狐译) 1
- overflow溢出处理
- Android接入第三方QQ登录
- Autofac for AutoMapper
- Xcode 14之大变化详细介绍
热门文章
- 红帽8搭建httpd
- Python编程代码规范(Google Style)
- [kpw] Kindle Paperwhite 升级到 5.6.5 后,kterm无法启动
- 在路上,走更远 ,我的2016
- XFTP连接服务器成功,传输文件失败解决方案
- xilinx 官方技术资料
- Nuist集训队专题:数论
- TF卡/SD卡/U盘容量“变小”的问题
- Delphi中关于DBGrid的DrawDataCell和DrawColumnCell的触发条件
- (12)RabbitMQ的TTL(消息有效期)和DLX(死信交换机/队列)