洛谷 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 营业额统计 ...
随机推荐
- Python 基础字典的增删改查
# 字典相关的代码## 1.字典的特性:a 字典的无序性: b 数据关联性强 C 键键值对 唯一一个映射数据类型# 字典的键必修二是可哈希的(不可变的数据类型:,字符串,数字的,布尔值,元祖)# 并且 ...
- js 自执行匿名函数(转载)
自执行匿名函数: 常见格式:(function() { /* code */ })(); 解释:包围函数(function(){})的第一对括号向脚本返回未命名的函数,随后一对空括号立即执行返回的未命 ...
- myql update from 语句
(6)UPDATE 语句与 SELECT 语句中的 TOP 子句一起使用对来自表 authors 的前十个作者的 state 列进行更新 UPDATE authors SET state = 'ZZ' ...
- python列表(list)的使用技巧及高级操作
python列表(list)的使用技巧及高级操作置顶 2018年03月25日 13:39:41 顽劣的石头 阅读数:5478 标签: python extend bisect list enumera ...
- 【Python】sql-内连接,左连接,右连接,union
内连接: mysql> select * from book_wangjing as book_1 inner join user_wangjing as user_1 on book_1.id ...
- 微软Power BI 每月功能更新系列——5月Power BI 新功能学习
Power BI Desktop 5月份功能摘要 本月Power BI Desktop除了许多报表功能的更新,Power BI对条件格式进行了重大改进,可以对报表的任何字段(包括字符串和日期)进行条件 ...
- [转] 带你彻底理解RSA算法原理
http://blog.csdn.net/dbs1215/article/details/48953589 1. 什么是RSA RSA算法是现今使用最广泛的公钥密码算法,也是号称地球上最安全的加密算法 ...
- ejs-模板
我今天第一次使用,使用的时候,遇到一些问题,还好有朋友帮我一起解决; 我先说说我使用过程中遇到的问题; 在express框架中引用 app.set('views',__dirname + '/view ...
- httpd: config error '*.php:/usr/bin/php-cgi' in '/etc/httpd.conf'
/********************************************************************************* * httpd: config e ...
- 复杂的动态布尔表达式性能评估(2)--Groovy实现
前言: 规则引擎中, 往往涉及到多个条件构成了复杂布尔表达式的计算. 对于这类布尔表达式, 一是动态可变的(取决于运营人员的设定), 二是其表达式往往很复杂. 如何快速的计算其表达式的值, 该系列文章 ...