博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[HNOI2002]营业额统计 Splay tree入门题
阅读量:6575 次
发布时间:2019-06-24

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

[HNOI2002]营业额统计

题目链接:

 [HNOI2002]营业额统计

Time Limit: 5 Sec  
Memory Limit: 162 MB
Submit: 4128  
Solved: 1305
[ ][ ][ ]

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

 
 

题意就是每读入一个数,在前面输入的数中找到一个与该数相差最小的一个。把所有的差值加起来。

三个操作:插入、求前驱、求后继。

 

简单的Splay tree入门题。照着别人代码写的。

 

#include 
#include
#include
#include
using namespace std;const int N=100005;const int INF=0x3f3f3f3f;int pre[N],key[N],ch[N][2],root,tot1;//分别表示父结点,键值,左右孩子(0左1右),根结点,结点数量int n;//新建一个结点void NewNode(int &r,int father,int k){ r=++tot1; pre[r]=father; key[r]=k; ch[r][0]=ch[r][1]=0;//左右孩子为空}//旋转,kind为1是右旋,为0是左旋void Rotate(int x,int kind){ int y=pre[x]; ch[y][!kind]=ch[x][kind]; pre[ch[x][kind]]=y; if(pre[y]) ch[pre[y]][ch[pre[y]][1]==y]=x; pre[x]=pre[y]; ch[x][kind]=y; pre[y]=x;}//Splay调整,将结点r调整到goal下面void Splay(int r,int goal){ while(pre[r]!=goal) { if(pre[pre[r]]==goal)Rotate(r,ch[pre[r]][0]==r); else { int y=pre[r]; int kind=ch[pre[y]][0]==y; if(ch[y][kind]==r) { Rotate(r,!kind); Rotate(r,kind); } else { Rotate(y,kind); Rotate(r,kind); } } } //更新根结点 if(goal==0)root=r;}int Insert(int k){ int r=root; while(ch[r][key[r]

 

转载地址:http://gpgjo.baihongyu.com/

你可能感兴趣的文章
DVWA系列之16 文件包含漏洞挖掘与防御
查看>>
mysql忧化参数
查看>>
MariaDB 10.0.X中,动态列支持 JSON 格式来获取数据。
查看>>
【习惯的力量】之五让拖延见鬼去吧
查看>>
SFB 项目经验-24-为持久聊天室-查询或者增加成员
查看>>
配套自测连载(一)
查看>>
Oracle高水位High Water Mark(HWM)简介
查看>>
“神秘”的加密指纹
查看>>
统一沟通-技巧-11-Lync-联盟-1-MSN
查看>>
职业、管理和招聘——近期的一些碎碎念
查看>>
SecureCRT session 的迁移
查看>>
【COCOS CREATOR 系列教程之二】脚本开发篇&事件监听、常用函数等示例整合
查看>>
Python工程师求职比中秘籍——获取offer有这么多门道
查看>>
Exchange工具07—Http watch
查看>>
SCCM2012 R2实战系列之四:初始化配置
查看>>
win7做wifi服务器
查看>>
[C# 网络编程系列]专题七:UDP编程补充——UDP广播程序的实现
查看>>
细品慢酌QuickTest关键视图(1)
查看>>
用C#完成Swift远程推送通知
查看>>
以数据为核心的SOC3.0时代到来
查看>>