tyvj1185营业额统计
描述 Description
营业额统计
Tiger最近被公司升任为营业部经理,他上任后接受公司交给的第一项任务便是统计并分析公司成立以来的营业情况。
Tiger拿出了公司的账本,账本上记录了公司成立以来每天的营业额。分析营业情况是一项相当复杂的工作。由于节假日,大减价或者是其他情况的时候,营业额会出现一定的波动,当然一定的波动是能够接受的,但是在某些时候营业额突变得很高或是很低,这就证明公司此时的经营状况出现了问题。经济管理学上定义了一种最小波动值来衡量这种情况:
该天的最小波动值=min{|该天以前某一天的营业额-该天的营业额|}
当最小波动值越大时,就说明营业情况越不稳定。
而分析整个公司的从成立到现在营业情况是否稳定,只需要把每一天的最小波动值加起来就可以了。你的任务就是编写一个程序帮助Tiger来计算这一个值。
第一天的最小波动值为第一天的营业额。
? 输入输出要求
输入格式 InputFormat
第一行为正整数n(n<=32767) ,表示该公司从成立一直到现在的天数,接下来的n行每行有一个正整数a(<=1000000) ,表示第i天公司的营业额。
输出格式 OutputFormat
输出文件仅有一个正整数,即Sigma(每天最小的波动值) 。结果小于2^31 。
样例输入 SampleInput
6
5
1
2
5
4
6
样例输出 SampleOutput
12
数据范围和注释 Hint
结果说明:5+|1-5|+|2-1|+|5-5|+|4-5|+|6-5|=5+4+1+0+1+1=12
bzoj卡了……不开心
平衡树裸题。写了个treap的
#include<cstdio>
#include<ctime>
#include<cstdlib>
#define maxnum 1000001
#define inf 1000000000
struct node{
int l,r,num,rando;
}tree[maxnum];
int treesize,root,n,ans,t1,t2;
int min(int a,int b)
{return a<b?a:b;}
void right_rotate(int &work)
{
int t = tree[work].l;
tree[work].l = tree[t].r;
tree[t].r = work;
work = t;
}
void left_rotate(int &work)
{
int t = tree[work].r;
tree[work].r = tree[t].l;
tree[t].l = work;
work = t;
}
void insert(int &now,int x)
{
if (now == 0)
{
now = ++treesize;
tree[now].rando = rand()%maxnum;
tree[now].num = x;
return;
}
if (x < tree[now].num)
{
insert(tree[now].l,x);
if (tree[tree[now].l].rando < tree[now].rando) right_rotate(now);
}
else
{
insert(tree[now].r,x);
if (tree[tree[now].r].rando < tree[now].rando) left_rotate(now);
}
}
void ask_before(int now,int x)
{
if(!now)return;
if(x>=tree[now].num){t1=tree[now].num;ask_before(tree[now].r,x);}
else ask_before(tree[now].l,x);
}
void ask_after(int now,int x)
{
if(!now)return;
if(x<=tree[now].num){t2=tree[now].num;ask_after(tree[now].l,x);}
else ask_after(tree[now].r,x);
}
int main()
{
srand(time(0));
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(root,x);
ask_after(root,x);
if(i!=1)ans+=min(x-t1,t2-x);
else ans+=x;
insert(root,x);
}
printf("%d",ans);
return 0;
}
tyvj1185营业额统计的更多相关文章
- BZOJ1588: [HNOI2002]营业额统计[BST]
1588: [HNOI2002]营业额统计 Time Limit: 5 Sec Memory Limit: 162 MBSubmit: 14151 Solved: 5366[Submit][Sta ...
- 【Treap】bzoj1588-HNOI2002营业额统计
一.题目 Description 营业额统计 Tiger最近被公司升任为营业部经理,他上任后接受公司交给的第一项任务便是统计并分析公司成立以来的营业情况. Tiger拿出了公司的账本,账本上记录了公司 ...
- 营业额统计(SBT)
营业额统计(SBT) #include<cstdio> #include<cstring> #include<string> #include<cstdlib ...
- NOI 2002 营业额统计 (splay or fhq treap)
Description 营业额统计 Tiger最近被公司升任为营业部经理,他上任后接受公司交给的第一项任务便是统计并分析公司成立以来的营业情况. Tiger拿出了公司的账本,账本上记录了公司成立以来每 ...
- BZOJ 1588: [HNOI2002]营业额统计
1588: [HNOI2002]营业额统计 Time Limit: 5 Sec Memory Limit: 162 MBSubmit: 14396 Solved: 5521[Submit][Sta ...
- 营业额统计(bzoj1588)
Description 营业额统计 Tiger最近被公司升任为营业部经理,他上任后接受公司交给的第一项任务便是统计并分析公司成立以来的营业情况. Tiger拿出了公司的账本,账本上记录了公司成立以来每 ...
- BZOJ 1588: [HNOI2002]营业额统计 双向链表 / splay / treap
1588: [HNOI2002]营业额统计 Description 营业额统计 Tiger最近被公司升任为营业部经理,他上任后接受公司交给的第一项任务便是统计并分析公司成立以来的营业情况. Tiger ...
- Splay树-Codevs 1296 营业额统计
Codevs 1296 营业额统计 题目描述 Description Tiger最近被公司升任为营业部经理,他上任后接受公司交给的第一项任务便是统计并分析公司成立以来的营业情况. Tiger拿出了公司 ...
- 【BZOJ-1588】营业额统计 Splay
1588: [HNOI2002]营业额统计 Time Limit: 5 Sec Memory Limit: 162 MBSubmit: 12485 Solved: 4508[Submit][Sta ...
随机推荐
- hadoop 环境搭建
Hadoop 2.配置HDFS HA (高可用) 前提条件 先搭建 http://www.cnblogs.com/raphael5200/p/5152004.html 的环境,然后在其基础上进行修 ...
- socket实例1
第一个例子创建了一个java工程,用来测试Socket的连接功能,通过浏览器可访问,地址为:127.0.0.1:端口号 MyServerSocket.java, package com.jikexue ...
- HTML标准事件(包含HTML5)
参考菜鸟教程链接:http://www.runoob.com/tags/ref-eventattributes.html
- 你需要知道的九大排序算法【Python实现】源码
#coding: utf-8 #!/usr/bin/python import randomimport math #随机生成0~100之间的数值def get_andomNumber(num): l ...
- [原创作品]Javascript内存管理机制
如果你也喜欢分享,欢迎加入我们:QQ group:164858883 内存策略:堆内存和栈内存栈内存:在函数中定义的一些基本类型的变量和对象的引用变量都是在函数的栈内存中分配.当在一段代码块中定义一个 ...
- 推荐:室内定位API - indoor Location API
indoor.rs 公司近日开放了API,包括免费free的,收费fee的版本. 详情见这里,价格不是很贵哦 Open API支持Android/iOS等移动平台 提供工具,帮助进行地图和WiFi信号 ...
- 300元差价选谁好 魅蓝note对比魅蓝手机
http://mobile.pconline.com.cn/608/6089437.html [PConline 对比评测]999元的魅蓝note和699元的魅蓝手机先后被发布,代表着魅族中低端手机已 ...
- 查询rman备份信息经常使用指令
查询rman备份信息经常使用指令 ----登陆到rman $rman target / ----以精简的格式查看备份信息 RMAN> list backup of database summar ...
- android学习——GestureDetector.OnGestureListener 详解
Android Touch Screen 与传统Click Touch Screen不同,会有一些手势(Gesture),例如Fling,Scroll等等.这些Gesture会使用户体验大大提升.An ...
- MAVEN Scope使用
在Maven的依赖管理中,经常会用到依赖的scope设置.这里整理下各种scope的使用场景和说明,以及在使用中的实践心得.Scope的使用场景和说明1.compile编译范围,默认scope,在工程 ...