博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【Treap】bzoj1588-HNOI2002营业额统计
阅读量:6501 次
发布时间:2019-06-24

本文共 1697 字,大约阅读时间需要 5 分钟。

一、题目

Description

营业额统计 Tiger最近被公司升任为营业部经理,他上任后接受公司交给的第一项任务便是统计并分析公司成立以来的营业情况。 Tiger拿出了公司的账本,账本上记录了公司成立以来每天的营业额。分析营业情况是一项相当复杂的工作。由于节假日,大减价或者是其他情况的时候,营业额会出现一定的波动,当然一定的波动是能够接受的,但是在某些时候营业额突变得很高或是很低,这就证明公司此时的经营状况出现了问题。经济管理学上定义了一种最小波动值来衡量这种情况: 该天的最小波动值 当最小波动值越大时,就说明营业情况越不稳定。 而分析整个公司的从成立到现在营业情况是否稳定,只需要把每一天的最小波动值加起来就可以了。你的任务就是编写一个程序帮助Tiger来计算这一个值。 第一天的最小波动值为第一天的营业额。

Input

第一行为正整数 ,表示该公司从成立一直到现在的天数,接下来的n行每行有一个整数(有可能有负数) ,表示第i天公司的营业额。

Output

输出文件仅有一个正整数,即Sigma(每天最小的波动值) 。结果小于2^31 。

Sample Input

6

5
1
2
5
4
6

Sample Output

12

HINT

结果说明:5+|1-5|+|2-1|+|5-5|+|4-5|+|6-5|=5+4+1+0+1+1=12

顺便附上原题链接→_→

二、代码实现

裸treap,没什么好说的┑( ̄Д  ̄)┍

1 #include
2 #include
3 #include
4 using namespace std; 5 const int MAXN=5e4+10; 6 const int INF=1e9+1e8; 7 int n; 8 struct node 9 {10 int key,pri,l,r;//关键字、优先级、左儿子编号、右儿子编号11 }tr[MAXN];12 int root,p,s,ptot;13 void query_pre(int k,int x)14 {15 if(!k)return;16 if(x
tr[k].key)query_sub(tr[k].r,x);28 else29 {30 s=tr[k].key;31 query_sub(tr[k].l,x);32 }33 return;34 }35 void turn_left(int &k)36 {37 int temp=tr[k].r;38 tr[k].r=tr[temp].l;39 tr[temp].l=k;40 k=temp;41 return;42 }43 void turn_right(int &k)44 {45 int temp=tr[k].l;46 tr[k].l=tr[temp].r;47 tr[temp].r=k;48 k=temp;49 return;50 }51 void insert(int &k,int x)52 {53 if(!k)54 {55 k=++ptot;56 tr[k].key=x;57 tr[k].pri=rand();58 return;59 }60 if(tr[k].key==x)return;61 else if(x
Problem1588. -- [HNOI2002]营业额统计

弱弱地说一句,本蒟蒻码字也不容易,转载请注明出处

转载于:https://www.cnblogs.com/Maki-Nishikino/p/6236211.html

你可能感兴趣的文章
通用权限实现的核心设计思想
查看>>
记录生活
查看>>
Samba文件共享服务
查看>>
Hadoop集群搭建
查看>>
DTD的入门案例
查看>>
SEO发展史
查看>>
Redis集群结构介绍(理论)
查看>>
40+个必备区块链开发工具【2019】
查看>>
cmdline-jmxclient.jar的简单用法
查看>>
HTML表格
查看>>
Django 数据库配置
查看>>
EYOUCMS 当前位置导航的修改方法
查看>>
阿里年薪50WJAVA工程师转大数据学习路线!
查看>>
Java开发想尝试大数据和数据挖掘,如何规划学习?
查看>>
CentOS 7 搭建 GitLab 服务器步骤
查看>>
关于《SAP FIORI 开发入门》课程答疑
查看>>
APP怎么花小钱办大事,一定认准精准营销!
查看>>
第五天元组、字典
查看>>
Linux中如何设置目录或文件的归属及权限
查看>>
shell中的select用法
查看>>