洛谷 2234 [HNOI2002]营业额统计——treap(入门)
题目:https://www.luogu.org/problemnew/show/P2234
学习了一下 treap 的写法。
学习材料:https://blog.csdn.net/litble/article/details/78934306
http://memphis.is-programmer.com/posts/46317.html
https://www.cnblogs.com/AKMer/p/9981274.html
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<ctime>
using namespace std;
int rdn()
{
int ret=;bool fx=;char ch=getchar();
while(ch>''||ch<''){if(ch=='-')fx=;ch=getchar();}
while(ch>=''&&ch<='')ret=ret*+ch-'',ch=getchar();
return fx?ret:-ret;
}
int Mn(int a,int b){return a<b?a:b;}
const int N=,M=1e9;
int n,rt,tot,vl[N],c[N][],rd[N],ans;
void rotate(int &cr,bool d)
{
int v=c[cr][!d];
c[cr][!d]=c[v][d]; c[v][d]=cr; cr=v;
}
void ins(int &cr,int k)
{
if(!cr){cr=++tot; vl[cr]=k; rd[cr]=rand()%M; return;}
int d;
if(k<=vl[cr]) d=, ins(c[cr][],k);
else d=, ins(c[cr][],k);
if(rd[c[cr][d]]>rd[cr])rotate(cr,!d);
}
int fnd_pr(int cr,int k)
{
if(!cr)return N;
if(vl[cr]<=k)
{
int d=fnd_pr(c[cr][],k);
return d==N?cr:d;
}
return fnd_pr(c[cr][],k);
}
int fnd_sc(int cr,int k)
{
if(!cr)return N;
if(vl[cr]>=k)
{
int d=fnd_sc(c[cr][],k);
return d==N?cr:d;
}
return fnd_sc(c[cr][],k);
}
int main()
{
srand(time()); n=rdn();
for(int i=,d;i<=n;i++)
{
d=rdn();
if(i==)ans=d;
else
{
int u=fnd_pr(rt,d), v=fnd_sc(rt,d);
if(u==N)ans+=vl[v]-d;
else if(v==N)ans+=d-vl[u];
else ans+=Mn(vl[v]-d,d-vl[u]);
}
ins(rt,d);
}
printf("%d\n",ans); return ;
}
洛谷 2234 [HNOI2002]营业额统计——treap(入门)的更多相关文章
- [洛谷P2234][HNOI2002] 营业额统计 - Treap
Description Tiger最近被公司升任为营业部经理,他上任后接受公司交给的第一项任务便是统计并分析公司成立以来的营业情况. Tiger拿出了公司的账本,账本上记录了公司成立以来每天的营业额. ...
- 洛谷.2234.[HNOI2002]营业额统计(Splay)
题目链接 //模板吧 #include<cstdio> #include<cctype> #include<algorithm> using namespace s ...
- 洛谷P2234 [HNOI2002] 营业额统计 [splay]
题目传送门 营业额统计 题目描述 Tiger最近被公司升任为营业部经理,他上任后接受公司交给的第一项任务便是统计并分析公司成立以来的营业情况. Tiger拿出了公司的账本,账本上记录了公司成立以来每天 ...
- 洛谷—— P2234 [HNOI2002]营业额统计
https://www.luogu.org/problem/show?pid=2234 题目描述 Tiger最近被公司升任为营业部经理,他上任后接受公司交给的第一项任务便是统计并分析公司成立以来的营业 ...
- 洛谷P2234 [HNOI2002]营业额统计
题目描述 Tiger最近被公司升任为营业部经理,他上任后接受公司交给的第一项任务便是统计并分析公司成立以来的营业情况. Tiger拿出了公司的账本,账本上记录了公司成立以来每天的营业额.分析营业情况是 ...
- 洛谷 P2234 [HNOI2002]营业额统计
题目描述 Tiger最近被公司升任为营业部经理,他上任后接受公司交给的第一项任务便是统计并分析公司成立以来的营业情况. Tiger拿出了公司的账本,账本上记录了公司成立以来每天的营业额.分析营业情况是 ...
- 洛谷P2234 [HNOI2002]营业额统计(01Tire树)
题目描述 Tiger最近被公司升任为营业部经理,他上任后接受公司交给的第一项任务便是统计并分析公司成立以来的营业情况. Tiger拿出了公司的账本,账本上记录了公司成立以来每天的营业额.分析营业情况是 ...
- bzoj 1588: [HNOI2002]营业额统计 treap
1588: [HNOI2002]营业额统计 Time Limit: 5 Sec Memory Limit: 162 MBSubmit: 13902 Solved: 5225[Submit][Sta ...
- BZOJ1588 HNOI2002 营业额统计 [Splay入门题]
[HNOI2002]营业额统计 Time Limit: 5 Sec Memory Limit: 162 MBSubmit: 4128 Solved: 1305 Description 营业额统计 ...
随机推荐
- L320 What late-night snacking has to do with sleep
What late-night snacking has to do with sleep Light-night snacking isn’t just something college stud ...
- winform 与百度搜索智能提示
private void textBox1_TextChanged(object sender, EventArgs e) { listBox1.Items.Clear(); if (string.I ...
- IE8的input兼容性问题
在chrome.firefox.IE9+都是支持input事件 在IE8中,单纯的input事件无法监听输入框中变化,需要与propertychange共用 测试代码如下: <!DOCTYPE ...
- org.springframework.dao.InvalidDataAccessApiUsageException报错
2018-01-09 18:12:29,980 [qtp1501019626-21] ERROR - 外部接口调用方法[TestController$$EnhancerBySpringCGLIB$$8 ...
- numpy中的复合数组
1.复合数组的创建 # 复合数组,最重要的是定义dtype a = np.array([('ABC', [1, 2, 3])], dtype="U3, 3i4") print(a) ...
- Unity 3D用简单的Cube、Sphere实现镜面/哈哈镜效果,只需十几秒哦!
Unity实现镜面和哈哈镜效果 本文提供全流程,中文翻译. Chinar 坚持将简单的生活方式,带给世人!(拥有更好的阅读体验 -- 高分辨率用户请根据需求调整网页缩放比例) Chinar -- 心分 ...
- rsync命令 续集 、linux系统日志、screen工具
1.rsync 通过服务进行监听同步: 开启服务:rsync --daemon (默认开启873端口) 需要编辑配制文件:/etc/rsyncd.conf port=873log file=/var ...
- 斐波那契 - pythoon实现
def fn_1(n): if n == 0 : return n elif n == 1 : return n else: a = [0,1] for i in range(2,n): a.appe ...
- 查看win电脑支持的最大内存?
wmic memphysical get maxcapacity 67108864 大约64G
- 【HDOJ1534】【差分约束+SPFA】
http://acm.hdu.edu.cn/showproblem.php?pid=1534 Schedule Problem Time Limit: 2000/1000 MS (Java/Other ...