c++csp-2021营业额统计
详细题目见洛谷P2234
题目描述
Tiger 最近被公司升任为营业部经理,他上任后接受公司交给的第一项任务便是统计并分析公司成立以来的营业情况。
Tiger 拿出了公司的账本,账本上记录了公司成立以来每天的营业额。分析营业情况是一项相当复杂的工作。由于节假日,大减价或者是其他情况的时候,营业额会出现一定的波动,当然一定的波动是能够接受的,但是在某些时候营业额突变得很高或是很低,这就证明公司此时的经营状况出现了问题。经济管理学上定义了一种最小波动值来衡量这种情况:当最小波动值越大时,就说明营业情况越不稳定。
而分析整个公司的从成立到现在营业情况是否稳定,只需要把每一天的最小波动值加起来就可以了。你的任务就是编写一个程序帮助 Tiger 来计算这一个值。
我们定义,一天的最小波动值 = \min{|\text{该天以前某一天的营业额}-\text{该天营业额}|}min{∣该天以前某一天的营业额−该天营业额∣}。
特别地,第一天的最小波动值为第一天的营业额。
输入格式
第一行为正整数 nn(n \leq 32767n≤32767) ,表示该公司从成立一直到现在的天数,接下来的 nn 行每行有一个整数 a_ia
i
(|a_i| \leq 10^6∣a
i
∣≤10
6
) ,表示第 ii 天公司的营业额,可能存在负数。
输出格式
输出一个正整数,即每一天最小波动值的和,保证结果小于 2^{31}2
31
。
输入输出样例
输入 #1 复制
6
5
1
2
5
4
6
输出 #1 复制
12
#include<bits/stdc++.h>using namespace std;
const int N = 2e6 + 10;
struct sb{int prev, next, nums;
};
sb lb[N];
int a[32772];
int ans;
int main() {int n;scanf ("%d", &n);int Min = 1e7;int Max = -1;for (int i = 1; i <= n; i++) {scanf ("%d", &a[i]);lb[a[i] += 1000005].nums++;Min = min (Min, a[i]);Max = max (Max, a[i]);}int last = Min;ans += a[1] - 1000005;for (int i = last + 1; i <= Max; i++) {if (!lb[i].nums) continue;lb[last].next = i;lb[i].prev = last;last = i;}for (int i = n; i >= 2; i--) {if (lb[a[i]].nums > 1) lb[a[i]].nums--;else {int la = lb[a[i]].prev;int ra = lb[a[i]].next;if (!la) ans += ra - a[i];else if (!ra) ans += a[i] - la;elseans += min (a[i] - la, ra - a[i]);lb[la].next = ra;lb[ra].prev = la;}}printf ("%d", ans);return 0;
}
c++csp-2021营业额统计相关推荐
- 【Treap】bzoj1588-HNOI2002营业额统计
一.题目 Description 营业额统计 Tiger最近被公司升任为营业部经理,他上任后接受公司交给的第一项任务便是统计并分析公司成立以来的营业情况. Tiger拿出了公司的账本,账本上记录了公司 ...
- bzoj1588[HNOI2002]营业额统计
bzoj1588[HNOI2002]营业额统计 题意: n天,每天得到一个值,要求输出每一天和这天得到的值相差最小的之前天得到的值与这个值的差的和.n不知道,不过O(nlog2n)可写. 题解: 说是 ...
- [BZOJ 1588][HNOI 2002] 营业额统计
这果然是在那个没有STL的年代出的题 1588: [HNOI2002]营业额统计 Time Limit: 5 Sec Memory Limit: 162 MB Submit: 16648 Solv ...
- 【链表】BZOJ1588: [HNOI2002]营业额统计
1588: [HNOI2002]营业额统计 Time Limit: 5 Sec Memory Limit: 162 MB Submit: 17555 Solved: 7179 [Submit][S ...
- BZOJ 1588: [HNOI2002]营业额统计
Description 营业额统计 Tiger最近被公司升任为营业部经理,他上任后接受公司交给的第一项任务便是统计并分析公司成立以来的营业情况. Tiger拿出了公司的账本,账本上记录了公司成立以来每 ...
- bzoj1588营业额统计
Description 营业额统计 Tiger最近被公司升任为营业部经理,他上任后接受公司交给的第一项任务便是统计并分析公司成立以来的营业情况. Tiger拿出了公司的账本,账本上记录了公司成立以来每 ...
- [BZOJ 1588] [HNOI 2002] 营业额统计
1588: [HNOI2002]营业额统计 Time Limit: 5 SecMemory Limit: 162 MB Description 营业额统计 Tiger最近被公司升任为营业部经理,他上任 ...
- bzoj1588 [HNOI2002]营业额统计
1588: [HNOI2002]营业额统计 Time Limit: 5 Sec Memory Limit: 162 MB Submit: 17931 Solved: 7391 [Submit][S ...
- P2234 [HNOI2002]营业额统计
P2234 [HNOI2002]营业额统计 这题没有用splay写,罪过 就是找一下前驱与后继,然后判断一下这个值出现没出现过 判重就是最暴力的拿数组判断就可以了 只不过,值有可能为负数,所以整体平移 ...
- [HNOI2002]营业额统计 Splay tree入门题
[HNOI2002]营业额统计 题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1588 [HNOI2002]营业额统计 Time Limit ...
最新文章
- python软件怎么使用-Python快速入门—如何选择使用包管理工具?
- 团队-爬虫豆瓣top250项目-项目进度
- 2022-02-25
- python k-means聚类分析_python进行数据分析
- CANopen笔记1
- [机器学习] XGBoost on Spark 分布式使用完全手册
- Exp3 免杀原理与实践 20164314
- 在服务器端运行JavaScript文件(二)
- java系列1 环境变量配置
- VLD在VS2019中的使用以及应用程序无法正常启动(0xc0150002)
- [Ubuntu] 解决Win10+Ubuntu双系统时间不一致问题
- 【Qt Quick】设置圆形图片
- 计算机专业职称入深户,深圳市人才引进入深户新政策
- 互联网思维——用户思维
- Hard Life UVA - 1389(最大密度子图 输出点集)
- Android进阶:Android零基础进阶到高级架构师
- Kubernetes 概述和搭建 (多节点)
- 前端学习之路坑一:json对象和JS对象
- 和菜头的独立 Blog 三十万点击量值得祝贺
- 《预训练周刊》第55期:中文预训练进展、大模型泛化、模型下游性能预测