题目描述

Tiger最近被公司升任为营业部经理,他上任后接受公司交给的第一项任务便是统计并分析公司成立以来的营业情况。

Tiger拿出了公司的账本,账本上记录了公司成立以来每天的营业额。分析营业情况是一项相当复杂的工作。由于节假日,大减价或者是其他情况的时候,营业额会出现一定的波动,当然一定的波动是能够接受的,但是在某些时候营业额突变得很高或是很低,这就证明公司此时的经营状况出现了问题。经济管理学上定义了一种最小波动值来衡量这种情况:

当最小波动值越大时,就说明营业情况越不稳定。

而分析整个公司的从成立到现在营业情况是否稳定,只需要把每一天的最小波动值加起来就可以了。你的任务就是编写一个程序帮助Tiger来计算这一个值。

第一天的最小波动值为第一天的营业额。

该天的最小波动值=min{|该天以前某一天的营业额-该天营业额|}。
输入格式

输入由文件’turnover.in’读入。

第一行为正整数n(n<=32767) ,表示该公司从成立一直到现在的天数,接下来的n行每行有一个整数ai(|ai|<=1000000) ,表示第i天公司的营业额,可能存在负数。
输出格式

输入输出样例
输入 #1

6
5
1
2
5
4
6

输出 #1

12

说明/提示

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


要想知道第n天的波动,只需要找到前n-1天营业额与第n天最相近的数据就可以。
multiset很适合解决这个问题
其实假如第一天小于0,得出的答案就不太符合实际情况了(第一天的波动就会是负数),这是题的一点儿漏洞吧。

#include<cstdio>
#include<set>using namespace std;
multiset<int>sales;//插入所有的营业额
int ans = 0;
void Count(int n);//将营业额n插入set
int Min(int a, int b);
int main()
{int n, a;scanf("%d",&n);scanf("%d",&a);ans = a;//疑惑:难道a<0也是这样?sales.insert(a);for(int i = 1; i < n; ++i){scanf("%d",&a);Count(a);}printf("%d\n",ans);return 0;
}
int Min(int a, int b)
{if(a < 0)a = -a;if(b < 0)b = -b;if(a > b)return b;return a;
}
void Count(int n)
{multiset<int>::iterator i = sales.insert(n);int a = (1 << 30), b = (1 << 30);if(i != sales.begin()){--i;a = *i;++i;}++i;if(i != sales.end()){b = *i;}ans += Min(n-a,n-b);return;
}

洛谷P2234 [HNOI2002]营业额统计 set简易解法相关推荐

  1. 洛谷P2234 [HNOI2002]营业额统计(01Tire树)

    题目描述 Tiger最近被公司升任为营业部经理,他上任后接受公司交给的第一项任务便是统计并分析公司成立以来的营业情况. Tiger拿出了公司的账本,账本上记录了公司成立以来每天的营业额.分析营业情况是 ...

  2. P2234 [HNOI2002]营业额统计

    P2234 [HNOI2002]营业额统计 这题没有用splay写,罪过 就是找一下前驱与后继,然后判断一下这个值出现没出现过 判重就是最暴力的拿数组判断就可以了 只不过,值有可能为负数,所以整体平移 ...

  3. 洛谷:P2234 [HNOI2002]营业额统计(stl,)

    题目: 分析:看完题,不知道怎么搜素. 只想到了排序. 看了题解,set还能这样用啊>.. stl中的集合有内置的:lowerbounder 代码: #include<bits/stdc+ ...

  4. P2234 [HNOI2002]营业额统计 (Java)

    题目描述 Tiger 最近被公司升任为营业部经理,他上任后接受公司交给的第一项任务便是统计并分析公司成立以来的营业情况. Tiger 拿出了公司的账本,账本上记录了公司成立以来每天的营业额.分析营业情 ...

  5. bzoj1588[HNOI2002]营业额统计

    bzoj1588[HNOI2002]营业额统计 题意: n天,每天得到一个值,要求输出每一天和这天得到的值相差最小的之前天得到的值与这个值的差的和.n不知道,不过O(nlog2n)可写. 题解: 说是 ...

  6. 【链表】BZOJ1588: [HNOI2002]营业额统计

    1588: [HNOI2002]营业额统计 Time Limit: 5 Sec  Memory Limit: 162 MB Submit: 17555  Solved: 7179 [Submit][S ...

  7. bzoj1588 [HNOI2002]营业额统计

    1588: [HNOI2002]营业额统计 Time Limit: 5 Sec  Memory Limit: 162 MB Submit: 17931  Solved: 7391 [Submit][S ...

  8. 洛谷P2879 [USACO07JAN]区间统计Tallest Cow

    洛谷P2879 [USACO07JAN]区间统计Tallest Cow 题目描述 给出牛的可能最高身高,然后输入m组数据 a b,代表a,b可以相望,最后求所有牛的可能最高身高输出 输入输出格式 输入 ...

  9. [HNOI2002]营业额统计 Splay tree入门题

    [HNOI2002]营业额统计 题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1588 [HNOI2002]营业额统计 Time Limit ...

最新文章

  1. 为什么应该安装使用 Arch Linux
  2. KVM 虚拟化原理探究--启动过程及各部分虚拟化原理
  3. javascript 数组以及对象的深拷贝方法
  4. WebBrowser 操作(从网上收集)
  5. Java基础day24
  6. linux查看并发连接数
  7. python exe文件运行依赖环境_python将py代码文件转换为EXE脱离环境运行
  8. 请假一天,回粤西老家买了套房
  9. cf Round 613
  10. python编程入门 pdf-Python编程从入门到精通.pdf
  11. 从模板引擎到模板引擎-使用aspx页面作为模板引擎的一种实现
  12. cocos2d-x 3.0对label的改进
  13. jdbctemplate mysql blob_JdbcTemplate 操作Oracle Blob
  14. 【知识图谱】OpenKG 发布多个新冠病毒相关开放知识图谱
  15. 怎样修改一篇简历 简历怎么写
  16. Coloring Trees
  17. React之Protals详解
  18. LTE的核心网之:MME,SGW,PGW
  19. 什么是嵌入式AI开发?人工智能芯片指什么?STM32、树莓派、Jetson TX2、华为昇腾部署神经网络区别在哪?
  20. 卷积神经网络和循环神经网络的思想内核是什么

热门文章

  1. DAY8-Nessus漏洞扫描
  2. eclipse代码编辑区字符串自动转义设置
  3. JAVA大数据Week1习题
  4. 论ul、ol和dl的区别
  5. Awesome Go
  6. 【李宏毅2020 ML/DL】P58 Unsupervised Learning - Neighbor Embedding | LLE, t-SNE
  7. 后续:为LAMP添加XCache加速
  8. 问卷调查模块实现的过程中的历程
  9. 鸿蒙os 2.0跑分,预装鸿蒙 OS 2.0!华为 MatePad Pro2 跑分曝光:麒麟 9000、8GB 内存
  10. VMware Sphere 虚拟磁盘创建选项