P2234 [HNOI2002] 营业额统计 java版本

news/2024/12/23 0:32:36/

文章目录

  • P2234 [HNOI2002] 营业额统计 java版本
    • 题目描述
    • 输入格式
    • 输出格式
    • 样例 #1
      • 样例输入 #1
      • 样例输出 #1
    • 提示
    • 算法分析
    • 代码实现
    • 结语

java_1">P2234 [HNOI2002] 营业额统计 java版本

题目描述

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

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

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

我们定义,一天的最小波动值 = min ⁡ { ∣ 该天以前某一天的营业额 − 该天营业额 ∣ } \min\{|\text{该天以前某一天的营业额}-\text{该天营业额}|\} min{该天以前某一天的营业额该天营业额}

特别地,第一天的最小波动值为第一天的营业额。

输入格式

第一行为正整数 n n n n ≤ 32767 n \leq 32767 n32767) ,表示该公司从成立一直到现在的天数,接下来的 n n n 行每行有一个整数 a i a_i ai ∣ a i ∣ ≤ 1 0 6 |a_i| \leq 10^6 ai106) ,表示第 i i i 天公司的营业额,可能存在负数。

输出格式

输出一个正整数,即每一天最小波动值的和,保证结果小于 2 31 2^{31} 231

样例 #1

样例输入 #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 5+|1-5|+|2-1|+|5-5|+|4-5|+|6-5|=5+4+1+0+1+1=12 5+∣15∣+∣21∣+∣55∣+∣45∣+∣65∣=5+4+1+0+1+1=12

算法分析

这个问题可以通过维护一个有序集合来解决。我们使用一个 TreeSet 来存储之前所有天的营业额,以便快速找到与当前天营业额最接近的两个值。

  1. 初始化一个空的 TreeSet 和一个 sum 变量来存储最小波动值的总和。
  2. 对于每一天的营业额,首先检查 TreeSet 是否为空。如果为空,说明是第一天,直接将营业额加到 sum 中。
  3. 如果 TreeSet 不为空,使用 floor 方法找到小于等于当前营业额的最大值,使用 higher 方法找到大于当前营业额的最小值。
  4. 计算当前营业额与这两个值的差的绝对值,并选择最小的差值加到 sum 中。
  5. 将当前营业额添加到 TreeSet 中。

代码实现

java">import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.StreamTokenizer;
import java.util.TreeSet;public class Main {static BufferedReader in = new BufferedReader(new InputStreamReader(System.in));static BufferedWriter out = new BufferedWriter(new OutputStreamWriter(System.out));static StreamTokenizer st = new StreamTokenizer(in);public static void main(String[] args) throws IOException {st.nextToken();int n = (int) st.nval;TreeSet<Integer> set = new TreeSet<>();int sum = 0;for (int i = 0; i < n; i++) {st.nextToken();int temp = (int) st.nval;if (set.isEmpty()) {sum += temp;} else {Integer a = set.floor(temp);Integer b = set.higher(temp);if (a == null) {sum += b - temp;} else if (b == null) {sum += temp - a;} else {sum += Math.min(temp - a, b - temp);}}set.add(temp);}out.write(Integer.toString(sum));out.flush();}
}

结语

在本题中,我们使用了 TreeSet 来有效地计算每天的最小波动值。这种方法不仅高效,而且代码简洁易懂。希望这篇文章能帮助你理解如何使用数据结构来解决实际问题。如果你有任何问题或建议,请在下方留言。

版权声明:本博客内容为原创,转载请保留原文链接及作者信息。


http://www.ppmy.cn/news/1517566.html

相关文章

程序猿成长之路之数据挖掘篇——Kmeans聚类算法

Kmeans 是一种可以将一个数据集按照距离&#xff08;相似度&#xff09;划分成不同类别的算法&#xff0c;它无需借助外部标记&#xff0c;因此也是一种无监督学习算法。 什么是聚类 用官方的话说聚类就是将物理或抽象对象的集合分成由类似的对象组成的多个类的过程。用自己的…

【在Linux世界中追寻伟大的One Piece】传输层协议UDP

目录 1 -> 传输层 2 -> 端口号 2.1 -> 端口号范围划分 2.2 -> 知名端口号 3 -> UDP协议 3.1 -> UDP协议端格式 3.2 -> UDP的特点 3.2.1 -> 面向数据报 3.3 -> UDP的缓冲区 3.4 -> UDP使用注意事项 3.5 -> 基于UDP的应用层协议 1 -…

基于SSM+小程序的旅游社交登录管理系统(旅游4)(源码+sql脚本+视频导入教程+文档)

&#x1f449;文末查看项目功能视频演示获取源码sql脚本视频导入教程视频 1 、功能描述 本旅游社交小程序功能有管理员和用户。管理员有个人中心&#xff0c;用户管理&#xff0c;每日签到管理&#xff0c;景点推荐管理&#xff0c;景点分类管理&#xff0c;防疫查询管理&…

力扣——数组(一)

一、二分法&#xff08;有序数组&#xff09; 1、搜索等于target的元素 法一&#xff1a; 直接遍历 class Solution { public:int search(vector<int>& nums, int target) {int i0;for(i0;i<nums.size();i){if(nums[i]target){return i;}}return -1;} }; 法二…

【C++第十五章】继承

【C第十五章】继承 定义&#x1f9d0; 继承是C面向对象编程中的一个核心概念&#xff0c;它允许创建一个新类&#xff08;称为派生类或子类&#xff09;从已有类&#xff08;称为基类或父类&#xff09;中继承属性和方法。 继承的主要用途包括&#xff1a; 代码重用&#xff1…

U盘读不出来怎么办

目录 一、检查物理连接 1. 重新插拔U盘 2. 检查U盘外观 二、软件设置检查 1. 取消隐藏U盘 2. 更新或重新安装U盘驱动 3. 检查磁盘管理 三、文件系统修复 1. 格式化U盘 2. 使用命令提示符修复 四、病毒扫描 五、其他注意事项 一、检查物理连接 1. 重新插拔U盘 最简单也…

RTC相关

RTC唤醒 &#xff08;Real Time Clock) sudo rtcwake -m [mode] -s [seconds]-m 选项指定进入的电源管理模式&#xff0c;可以是&#xff1a; standby&#xff1a;进入待机模式 freeze&#xff1a;冻结模式 mem&#xff1a;挂起到内存 disk&#xff1a;挂起到磁盘 off&#xf…

AI产品经理学习路线【2024最新】,从零基础到精通,非常详细收藏我这一篇就够了

成为一名优秀的AI产品经理不仅需要掌握相关的技术知识&#xff0c;还需要具备良好的产品思维、市场洞察力以及跨部门沟通协调能力。下面是一个详细的AI产品经理学习路线&#xff0c;旨在帮助有志于从事该职业的人士快速成长。 AI产品经理的学习路线 第一阶段&#xff1a;基础知…