[洛谷]P2234 [HNOI2002]营业额统计

news2025/7/6 8:38:04

[洛谷]P2234 [HNOI2002]营业额统计

  • 一、问题描述
    • 题目描述
    • 输入格式
    • 输出格式
    • 样例 #1
      • 样例输入 #1
      • 样例输出 #1
    • 提示
  • 二、问题分析
    • 1、算法标签
    • 2、思路分析
  • 三、代码实现

一、问题描述

[洛谷]P2234 [HNOI2002]营业额统计

题目描述

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

二、问题分析

1、算法标签

这道题考察的是容器 s e t set set的使用。

2、思路分析

这道题的核心就是一件事情:给你一个数字 x x x,而我们要找到数轴上距离 x x x的最小值。而此时,我们就联想到了 s e t set set容器中的一个函数: l o w e r lower lower_ b o u n d ( ) bound() bound()

我们传入一个参数 x x x,这个函数的作用就是找到第一个不小于这个数的元素所在的位置,并返回这个位置的迭代器。如果不存在这个数的话,那么这个函数返回的就是最后一个元素的后一个位置的迭代器。

那么此时我们就分为三种情况:

在这里插入图片描述
上图是一个 s e t set set容器:

如果返回的是第一个元素的迭代器,那么容器中的第一个元素就是距离最近的。同理,如果返回了迭代器 e n d end end,那么自然容器中的最后一个元素就是距离最近的。如果停在中间的位置:我们就需要考虑一下左右两个数字和我们当前的距离,因为右侧的数是第一个大于我们的数字,左侧的数是最后一个小于我们的数字。因此,我们需要在二者之间选一个距离最小的。

三、代码实现

#include<iostream>
#include<set>
#include<algorithm>
using namespace std;
int main()
{
    set<int>s;
    int n,sum=0;
    cin>>n;
    while(n--)
    {
        int x;
        cin>>x;
        auto it=s.lower_bound(x);
        if(s.empty())
        {
            sum+=x;
        }
        else
        {
            auto rit=it;
            auto lit=--it;
            int r=*rit;
            int l=*lit;
            if(rit==s.begin())
            {
                sum+=abs(r-x);
            }
            else if(rit==s.end())
            {
                sum+=abs(l-x);
            }
            else
            {
                sum+=min(abs(r-x),abs(l-x));
            }
        }
        s.insert(x);
    }
    cout<<sum;
    return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/109207.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

微服务系列 - Zookeeper下篇:源码解析

前言 关于zookeeper的入门到精通请阅读&#xff1a;微服务系列 - Zookeeper上篇 注&#xff1a;本内容仅用于个人学习笔记&#xff0c;如有侵扰&#xff0c;联系删除 参考文档&#xff1a;https://blog.csdn.net/mjb740074431/article/details/120173792 一、算法基础 Zook…

@Configuration注解

1.作用 Configuration注解的作用&#xff1a;声明一个类为配置类&#xff0c;用于取代bean.xml配置文件注册bean对象。 2.基础运用 Configuration注解最常见的搭配使用有两个&#xff1a;Bean和Scope Bean&#xff1a;等价于Spring中的bean标签用于注册bean对象的&#xff…

SpringBoot 过滤器、拦截器、监听器对比及使用场景

一、关系图理解 二、区别 1.过滤器 过滤器是在web应用启动的时候初始化一次, 在web应用停止的时候销毁 可以对请求的URL进行过滤, 对敏感词过滤 挡在拦截器的外层 实现的是 javax.servlet.Filter 接口&#xff0c;是 Servlet 规范的一部分 在请求进入容器后&#xff0c;但…

Java 线程的六种状态及其简易转换

1.Java中线程的状态分为六种 NEW&#xff1a;初始状态&#xff0c;线程被创建&#xff0c;但是还没有调用start()方法。 RUNNABLE&#xff1a;运行状态&#xff0c;Java线程将操作系统中的就绪和运行两种状态笼统地称作“运行中”。 BLOCKED&#xff1a;阻塞状态,表示线程阻塞于…

IJCAI-2022 多级发射方法的脉冲神经网络

原文链接&#xff1a;CSDN-脉冲神经网络&#xff08;SNN&#xff09;论文阅读&#xff08;四&#xff09;-----IJCAI-2022 多级发射方法的脉冲神经网络 Multi-Level Firing with Spiking DS-ResNet: Enabling Better and Deeper Directly-Trained Spiking Neural Networks目录说…

SAP UI5 Smart Table 和 Smart Filter Bar 的联合使用方法介绍试读版

本教程第 147 个步骤&#xff0c;我们介绍了 SAP UI5 Smart Table 控件的用法&#xff1a; SAP UI5 应用开发教程之一百四十七 - SAP UI5 SmartTable 控件的使用介绍 如下图所示&#xff1a; 本步骤我们在 Smart Table 本身的基础上再进一步&#xff0c;学习如何将 Smart Tab…

占道摆摊经营监控报警系统 yolov5

占道摆摊经营监控报警系统通过Python基于yolov5深度学习网络模型&#xff0c;对城市道路区域实时检测&#xff0c;当yolov5模型检测到有流动摊点摆摊违规经营时&#xff0c;立即抓拍告警。Yolo模型采用预定义预测区域的方法来完成目标检测&#xff0c;具体而言是将原始图像划分…

[java]-JDBC

JDBC 是 Java 连接数据库的一种方式&#xff0c;它是一种 Java API&#xff0c;可以用于连接数据库&#xff0c;并且可以访问数据库中的数据。 JDBC 原理 JDBC 是接口&#xff0c;驱动是接口的实现&#xff0c;没有驱动将无法完成数据库连接&#xff0c;从而不能操作数据库!每…

USB TO SPI(上海同旺电子)调试器调试MCP4822

所需设备&#xff1a; 1、USB TO SPI(上海同旺电子)&#xff1b; 2、MCP4822&#xff1a;双通道12 位电压输出DAC; 特性 • MCP4802&#xff1a;双通道8 位电压输出DAC • MCP4812&#xff1a;双通道10 位电压输出DAC • MCP4822&#xff1a;双通道12 位电压输出DAC • 轨对…

React18:创建React项目(自动)

文章目录使用步骤项目目录结构Node_modulesPublicSrcPackage.Json总结使用步骤 打开命令行进入到项目所在目录使用如下命令&#xff1a;npx create-react-app 项目名 注意&#xff1a;项目名不能带大写字符 项目目录结构 项目目录结构如下&#xff1a; react-app├─ no…

网络实验之RIPV2协议(二)

一、RIPV2协议和实验简介 RIP-2是一种无类别路由协议&#xff08;Classless Routing Protocol&#xff09;&#xff0c;支持路由标记&#xff0c;在路由策略中可根据路由标记对路由进行灵活的控制。报文中携带掩码信息&#xff0c;支持路由聚合和CIDR&#xff08;Classless Int…

MMIM(2021 EMNLP)分级互信息最大化

论文题目&#xff08;Title&#xff09;&#xff1a;Improving Multimodal Fusion with Hierarchical Mutual Information Maximization for Multimodal Sentiment Analysis 研究问题&#xff08;Question&#xff09;&#xff1a;提出了一个名为 (MMIM)&#xff0c;它在层次上…

Centos7下安装Nginx及配置SSL

文章目录1.官网下载Nginx2.安装依赖包3.安装Nginx4.启动Nginx5.防火墙放开端口6.Nginx的SSL模块安装7.SSL证书准备8.Nginx配置SSL1.官网下载Nginx ​ 去官网下载需要的nginx压缩包&#xff0c;地址&#xff1a;http://nginx.org/en/download.html&#xff0c;此处下载最新稳定…

DFS——剪枝

文章目录概述优化搜索顺序排除等效冗余可行性剪枝最优性剪枝例题小猫爬山木棒总结概述 优化搜索顺序 不同的搜索顺序会产生不同的搜索树形态&#xff0c;与可行性剪枝结合&#xff0c;去除非法状态&#xff0c;按照一定顺序可使规模大幅度减小。 例&#xff1a; 给定一个无重复…

JavaSE第6篇:面向对象上

一、面向对象 1、面向对象&#xff1a;人关注对象、人关注具体事物信息 2、对象: 只要是客观存在的事物皆为对象 面向对象程序设计的重点是类的设计 设计类就是设计类的成员 思考&#xff1a;人把大象装进冰箱 ? 面向过程POP思想&#xff1a;强调的是过程&#xff08;动…

Web前端开发入门学习分享

Web前端开发入门学习分享 1&#xff1a;如何开始学习Web前端 首先你需要学习html的各个标签&#xff0c;掌握其用法和规范&#xff0c;明白其作用。 开始学习css的使用&#xff0c;你先学习在html页面中为标签增加css样式&#xff0c;其次是将css写在网页的<head></…

【记录】chmod修改组属性失效问题

记录一次chmod命令修改文件夹失效问题。 1.问题描述 有一个普通用户的目录test权限是750&#xff0c;使用chmod将文件权限修改成770发现同组的其他用户无法在该目录创建文件。 2.问题原因 给目录设置acl权限导致chmod在修改文件权限时失效【其实不是失效了】 调研发现&#…

超1.58亿人将“血拼”,超级星期六购物节即将到来

超1.58亿人将“血拼”&#xff01;美国超级星期六购物节即将到来&#xff01;亚马逊出手整治“远仓近送”&#xff01;据美国零售联合会的年度消费者调查结果显示&#xff0c;在今年圣诞节前的最后一个星期六&#xff08;即超级星期六&#xff09;&#xff0c;将有1.58亿人发生…

集成滤波器的5G大规模天线的S参数测试方法

【摘 要】集成滤波器的5G大规模天线由于每个通道包含了一组滤波器,使得5G大规模天线的通道之间的幅度和相位一致性指标变得很差,进一步地,使得获取除滤波器以外的纯通道之间的幅度和相位的一致性指标变得非常困难。对集成滤波器的5G大规模天线的测试方法进行了原理分析和实…

postgresql及wal2json插件安装

1、安装postgres 安装文档见&#xff1a;https://www.postgresql.org/download/linux/redhat/ 我这里是centos7系统&#xff0c;选择安装postgresql11 # Install the repository RPM: sudo yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_…