BZOJ 1588 TREAP 解题报告
来源:互联网 发布:java员工请假系统 编辑:程序博客网 时间:2024/05/18 11:31
1588: [HNOI2002]营业额统计
Description
营业额统计 Tiger最近被公司升任为营业部经理,他上任后接受公司交给的第一项任务便是统计并分析公司成立以来的营业情况。 Tiger拿出了公司的账本,账本上记录了公司成立以来每天的营业额。分析营业情况是一项相当复杂的工作。由于节假日,大减价或者是其他情况的时候,营业额会出现一定的波动,当然一定的波动是能够接受的,但是在某些时候营业额突变得很高或是很低,这就证明公司此时的经营状况出现了问题。经济管理学上定义了一种最小波动值来衡量这种情况: 该天的最小波动值 当最小波动值越大时,就说明营业情况越不稳定。 而分析整个公司的从成立到现在营业情况是否稳定,只需要把每一天的最小波动值加起来就可以了。你的任务就是编写一个程序帮助Tiger来计算这一个值。 第一天的最小波动值为第一天的营业额。 输入输出要求
Input
第一行为正整数 ,表示该公司从成立一直到现在的天数,接下来的n行每行有一个整数(有可能有负数) ,表示第i
天公司的营业额。
天数n<=32767,
每天的营业额ai <= 1,000,000。
最后结果T<=2^31
Output
输出文件仅有一个正整数,即Sigma(每天最小的波动值) 。结果小于2^31 。
【解题报告】
实质:给定一个序列{ai},求:
关于这个随机函数
inline int q_rand(){ static int seed=10007; return seed=int(seed*48271LL%2147483647);}
十分的清真,至于为什么
http://blog.csdn.net/h348592532/article/details/52837228
代码如下:
#include<cstdio>#include<cstring>#include<algorithm>#include<cmath>using namespace std;inline int q_rand(){ static int seed=10007; return seed=int(seed*48271LL%2147483647);}struct Node { Node *ch[2]; int v,r; Node():r(q_rand()) {ch[0]=ch[1]=NULL;} Node(int v):v(v),r(q_rand()) {ch[0]=ch[1]=NULL;} int cmp(int va) { return va<this->v?0:1; }};inline void Rotate(Node* &o,int d) { Node *k=o->ch[d^1]; o->ch[d^1]=k->ch[d]; k->ch[d]=o; o=k;}#define inf 0x7fffffffinline int Insert(Node* &o,int v) { int t1=abs(v-o->v),t2=inf; int d=o->cmp(v); if(o->ch[d]==NULL) { o->ch[d]=new Node(v); } else { t2=Insert(o->ch[d],v); } if(o->r<o->ch[d]->r) Rotate(o,d^1); return min(t1,t2);}Node *root;int N;int main() { scanf("%d",&N); int ans=0,temp; //1st if(!~scanf("%d",&temp)) temp=0; ans=temp; root=new Node(temp); //else for(int i=1;i<N;++i) { if(!~scanf("%d",&temp)) temp=0; ans+=Insert(root, temp); } printf("%d\n", ans); return 0;}
让我看到你们的双手
阅读全文
0 0
- BZOJ 1588 TREAP 解题报告
- BZOJ 3224 TREAP 解题报告
- POJ 1442 Treap 解题报告
- bzoj 3223 splay 解题报告
- BZOJ 3223 Splay 解题报告
- BZOJ 1820 DP 解题报告
- BZOJ 2144 LCA 解题报告
- BZOJ 4152 博弈论 解题报告
- BZOJ 1566 DP 解题报告
- BZOJ 3119 贪心 解题报告
- bzoj 1036 树链剖分 解题报告
- bzoj 3696 化合物 解题报告
- BZOJ 2563 贪心 解题报告
- BZOJ 3790 Manacher 解题报告
- BZOJ 2160 Manacher 解题报告
- BZOJ 2038 莫队 解题报告
- BZOJ 3687 bitset 解题报告
- BZOJ 2565 Manacher 解题报告
- 将图片文件以流的方式写入到jsp页面
- Python logging模块详解
- 26.在一个字符串(1<=字符串长度<=10000,全部由大写字母组成)中找到第一个只出现一次的字符,并返回它的位置
- 中国计算机学会CCF推荐国际学术会议和期刊目录-计算机科学理论
- dos命令特殊符号
- BZOJ 1588 TREAP 解题报告
- java代理(三)--cglib动态代理
- Android学习笔记(二)–Android View绘制
- PI升级传输
- Cake
- 数据结构之辗转相除法的错误实践
- 购物车实现
- hibernate之单向多对一关联
- 个人常关注的博客--都是一些android大神,写的文章很值得学习