洛谷 P2234:[HNOI2002] 營業額統計 ← STL set

【題目來源】
https://www.luogu.com.cn/problem/P2234

【題目描述】
Tiger 最近被公司升任為營業部經理,他上任后接受公司交給的第一項任務便是統計并分析公司成立以來的營業情況。
Tiger 拿出了公司的賬本,賬本上記錄了公司成立以來每天的營業額。分析營業情況是一項相當復雜的工作。由于節假日,大減價或者是其他情況的時候,營業額會出現一定的波動,當然一定的波動是能夠接受的,但是在某些時候營業額突變得很高或是很低,這就證明公司此時的經營狀況出現了問題。經濟管理學上定義了一種
最小波動值來衡量這種情況:當最小波動值越大時,就說明營業情況越不穩定。
而分析整個公司的從成立到現在營業情況是否穩定,只需要把每一天的最小波動值加起來就可以了。你的任務就是編寫一個程序幫助 Tiger 來計算這一個值。
我們定義,
一天的最小波動值 = min{∣該天以前某一天的營業額?該天營業額∣}
特別地,
第一天的最小波動值為第一天的營業額

【輸入格式】
第一行為正整數 n(n≤
32767) ,表示該公司從成立一直到現在的天數,接下來的 n 行每行有一個整數 ai(∣ai∣≤10^6) ,表示第 i 天公司的營業額,可能存在負數

【輸出格式】
輸出一個正整數,即每一天最小波動值的和,保證結果小于
2^31

【輸入樣例】
6
5
1
2
5
4
6

【輸出樣例】
12

【說明/提示】
結果說明:5+∣1?5∣+∣2?1∣+∣5?5∣+∣4?5∣+∣6?5∣=5+4+1+0+1+1=12

【算法分析】
● STL set 常用函數解析

https://blog.csdn.net/hnjzsyjyj/article/details/127017796
https://blog.csdn.net/hnjzsyjyj/article/details/145528031

● 代碼邏輯解析
?(一)初始化階段?
在集合 s 中預先插入
inf-inf,確保后續查找操作始終存在前驅和后繼節點,避免空集合導致的異常?注意:此處的無窮大 inf 設為 0x3f3f3f3f,不要設為 0x7f7f7f7f。這是因為,0x7f7f7f7f 的缺點是容易在加法運算中溢出,導致負數結果,這在算法中可能引發錯誤?。
?(二)輸入處理階段?
讀取整數 n,循環處理每個輸入值 x。
?1.當集合僅含初始邊界?
inf-inf?時?(s.size() == 2),直接插入 x 并將 x 累加到答案 ans 中。
?2. 當集合已有其他元素時?:
(1)使用
lower_bound(x) 找到第一個大于等于 x 的迭代器 it?。
(2)若 *it != x(即 x 不存在于集合中),計算 x 與 *it(后繼)和 *--t(前驅)的最小差值,累加到 ans。
(3)插入 x 到集合中。
(三)輸出結果?
最終輸出累加的最小差值總和 ans。

● 計算過程詳析
1.輸入 5 時 → 集合初始只有兩個邊界 → ans+=5 → 插入 5
2.輸入 1 時 → 前驅 -inf,后繼 5 → 最小差值 4 → ans+=4 → 插入 1
3.輸入 2 時 → 前驅 1,后繼 5 → 最小差值1 → ans+=1 → 插入 2
4.輸入 5 時 → 已存在,不處理
5.輸入 4 時 → 前驅 2,后繼 5 → 最小差值 1 → ans+=1 → 插入 4
6.輸入 6 時 → 前驅 5,后繼 inf → 最小差值 1 → ans+=1 → 插入 6
累計總和:5+4+1+1+1=12

● ???????適用場景
該算法適用于需要
動態維護有序序列,并在每次插入時快速計算與相鄰元素的最小差值的場景,如實時數據流分析或特定競賽題目?。

【算法代碼】

#include <bits/stdc++.h>
using namespace std;const int inf=0x3f3f3f3f;
set<int> s;
set<int>::iterator it,t;
int x,ans;
int n;int main() {s.insert(inf);s.insert(-inf);cin>>n;while(n--) {cin>>x;if(s.size()==2) {s.insert(x);ans+=x;} else {it=s.lower_bound(x);if(*it!=x) {t=it, t--;ans+=min(abs(x-*it),abs(x-*t));s.insert(x);}}}cout<<ans<<endl;return 0;
}/*
in:
6
5
1
2
5
4
6out:
12
*/





【參考文獻】
https://blog.csdn.net/hnjzsyjyj/article/details/145528031
https://blog.csdn.net/hnjzsyjyj/article/details/146110033



?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/73017.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/73017.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/73017.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

VSCode 2025最新前端開發必備插件推薦匯總(提效指南)

&#x1f31f;前言: 如果你是一名前端開發工程師&#xff0c;合適的開發工具能大大提高工作效率。Visual Studio Code (VSCode) 憑借其輕量級、高擴展性的特點&#xff0c;已成為眾多前端開發者在win系電腦的首選IDE。 名人說&#xff1a;博觀而約取&#xff0c;厚積而薄發。—…

Java學習--Redis

官網&#xff1a;https://redis.io 中文網&#xff1a;Redis中文網 Redis安裝包分為 Windows 版和 Linux 版&#xff1a; Windows版下載地址&#xff1a;Releases microsoftarchive/redis GitHub Linux版下載地址&#xff1a; Index of /releases/ 一、Redis簡介 Redis是…

matlab慕課學習3.2+3.3

于20250310 3.2用if語句實現選擇結構 3.2.1什么是選擇結構 用if 語句和switch語句可實現選擇結構 3.2.2單分支if語句 if 條件語句組 %可以是一條也可是多條end 當條件為標量&#xff0c;非0表成立&#xff0c;0表示不成立。 當條件為矩陣時&#xff0c;矩陣非空&#xff…

JavaScript性能優化:DOM操作優化實戰

JavaScript性能優化&#xff1a;DOM操作優化實戰 一 重排與重繪的代價 問題場景 用戶點擊按鈕后&#xff0c;需要動態生成一個包含10,000個選項的下拉列表&#xff0c;但界面出現長達5秒的凍結。 錯誤代碼示例 function createList() {const ul document.getElementById(…

【Java學習】包裝類

面向對象系列九 包裝類變量 一、裝箱 1.實例化包裝對象 2.靜態緩存池 3.寫法 二、拆箱 包裝類變量 每個基本數據類型都有對應的基本類型的包裝類變量&#xff0c;將基本數據類型通過對應的包裝類對象載入著進入到類與對象面向對象體系 一、裝箱 Integer.valueOf(int) —…

【第22節】C++設計模式(行為模式)-Iterator(迭代器)模式

一、問題背景 Iterator 模式是設計模式中最為常見和實用的模式之一。它的核心思想是將對聚合對象的遍歷操作封裝到一個獨立的類中&#xff0c;從而避免暴露聚合對象的內部表示。通過 Iterator 模式&#xff0c;我們可以實現對聚合對象的統一遍歷接口&#xff0c;而不需要關心聚…

02C#基本結構篇(D4_注釋-訪問修飾符-標識符-關鍵字-運算符-流程控制語句)

目錄 一、注釋 1. 單行注釋 2. 多行注釋 3. XML文檔注釋 4. 使用建議和最佳實踐&#xff1a; 二、訪問修飾符 1. public 2. private 3. protected 4. internal 5. protected internal 或 protected and internal 6. private protected 或 private and protected 7.…

【CXX】6.2 str — rust::Str

Rust::Str 公共 API // rust/cxx.hclass Str final { public:Str() noexcept;Str(const Str &) noexcept;Str(const String &) noexcept;// 如果輸入不是 UTF-8&#xff0c;拋出 std::invalid_argument 異常。Str(const std::string &);Str(const char *);Str(con…

基于windows的MySQL安裝(2025最新,小白可用)

目錄 一&#xff0c;下載官網地址&#xff08;及版本選擇&#xff09;&#xff1a; 二&#xff0c;以安裝程序的方式安裝MySQL 1&#xff0c;安裝過程 2&#xff0c;用客戶端使用MySQL 3&#xff0c;配置環境變量在windows命令行界面使用mysql 下次開機后手動啟用服務 三…

Jenkins實現自動化構建與部署:上手攻略

一、持續集成與Jenkins核心價值 1.1 為什么需要自動化構建&#xff1f; 在現代化軟件開發中&#xff0c;團隊每日面臨以下挑戰&#xff1a; 高頻代碼提交&#xff1a;平均每個開發者每天提交5-10次代碼。多環境部署&#xff1a;開發、測試、預發布、生產環境需頻繁同步。復雜…

4個 Vue 路由實現的過程

大家好&#xff0c;我是大澈&#xff01;一個喜歡結交朋友、喜歡編程技術和科技前沿的老程序員&#x1f468;&#x1f3fb;?&#x1f4bb;&#xff0c;關注我&#xff0c;科技未來或許我能幫到你&#xff01; Vue 路由相信朋友們用的都很熟了&#xff0c;但是你知道 Vue 路由…

數學之快速冪-數的冪次

題目描述 給定三個正整數 N,M,P&#xff0c;求 輸入描述 第 1 行為一個整數 T&#xff0c;表示測試數據數量。 接下來的 T 行每行包含三個正整數 N,M,P。 輸出描述 輸出共 T 行&#xff0c;每行包含一個整數&#xff0c;表示答案。 輸入輸出樣例 示例 1 輸入 3 2 3 7 4…

【JavaEE】多線程進階(2)

【JavaEE】多線程進階&#xff08;2&#xff09; 一、JUC(java.util.concurrent) 的常?類1.1 Callable 接?1.2 ReentrantLock1.3 原子類原子類的特性&#xff1a;常見原子類&#xff1a;原子類的實例&#xff1a; 1.4 線程池1.5 信號量 Semaphore代碼實例 1.6 CountDownLatch…

[漏洞篇]XSS漏洞詳解

[漏洞篇]XSS漏洞 一、 介紹 概念 XSS&#xff1a;通過JS達到攻擊效果 XSS全稱跨站腳本(Cross Site Scripting)&#xff0c;為避免與層疊樣式表(Cascading Style Sheets, CSS)的縮寫混淆&#xff0c;故縮寫為XSS。這是一種將任意 Javascript 代碼插入到其他Web用戶頁面里執行以…

越早越好!8 個反直覺的金錢真相|金錢心理學

很多人都追求財富自由&#xff0c;但成功的人少之又少。 這可能是因為&#xff0c;人們往往忽略了一些金錢的真相和常識。 01 金錢常識 & 真相 為了構建健康的金錢觀&#xff0c;我讀了一本有點反直覺&#xff0c;有點像雞湯&#xff0c;但都是財富真相的書。 來自 Morg…

Spring Boot/Spring Cloud 整合 ELK(Elasticsearch、Logstash、Kibana)詳細避坑指南

我們在開發中經常會寫日志&#xff0c;所以需要有個日志可視化界面管理&#xff0c;使用ELK可以實現高效集中化的日志管理與分析&#xff0c;提升性能穩定性&#xff0c;滿足安全合規要求&#xff0c;支持開發運維工作。 下述是我在搭建ELK時遇到的許許多多的坑&#xff0c;希望…

AI編程: 一個案例對比CPU和GPU在深度學習方面的性能差異

背景 字節跳動正式發布中國首個AI原生集成開發環境工具&#xff08;AI IDE&#xff09;——AI編程工具Trae國內版。 該工具模型搭載doubao-1.5-pro&#xff0c;支持切換滿血版DeepSeek R1&V3&#xff0c; 可以幫助各階段開發者與AI流暢協作&#xff0c;更快、更高質量地完…

手機屏幕摔不顯示了,如何用其他屏幕臨時顯示,用來導出資料或者清理手機

首先準備一個拓展塢 然后 插入一個外接的U盤 插入鼠標 插入有數字小鍵盤區的鍵盤 然后準備一根高清線&#xff0c;一端鏈接電腦顯示器,一端插入拓展塢 把拓展塢的連接線&#xff0c;插入手機充電口&#xff08;可能會需要轉接頭&#xff09; 然后確保手機開機 按下鍵盤…

探索鏈表的奧秘:C語言中的查找操作與鏈表打印

目錄 鏈表的基本結構 頭插法 打印鏈表 按位置查找 按值查找 主函數 查找操作 示例運行 輸出示例 總結 在數據結構的學習中&#xff0c;鏈表是一種非常重要的線性結構。它的動態特性使得在插入和刪除操作時比數組更為高效。今天&#xff0c;我們將繼續探討鏈表的操作&…

第八屆藍橋杯單片機省賽

什么&#xff1f;你把最近幾屆省賽真題做完已經無題可做了&#xff0c;那不妨來看看老古董第八屆省賽的題目吧&#xff01; 附件&#xff1a;第八屆藍橋杯單片機省賽 一、數碼管 1.頁面流轉 以上的頁面流轉功能可以用下圖總結&#xff1a; #mermaid-svg-38fdQpdydbMy5CyP {fo…