当前位置: 首页 > news >正文

CF2013D 题解

提供一个二分做法。

因为当 \(a_i > a_{i + 1}\) 是做操作是不劣的,所以最终 \(a\) 一定单调不降。那么我们二分一个最小的 \(\max(a_i)\) 和最大的 \(\min(a_i)\),答案就是 \(\max(a_i) - \min(a_i)\)

下面说一下如何 check,以 \(\max(a_i)\) 举例。设当前二分到 \(M\),check 的时候要把 \(> M\) 的元素变小。于是可以计算出最少要 \(-1\) 多少次,把它与最多能 \(+1\) 多少次比较,即可进行 check。

正确性证明。

#include <iostream>
#include <ranges>
#include <vector>using namespace std;
using i64 = long long;constexpr i64 V = 1e12;struct Solution {vector<i64> a;bool check_min(i64 mn){i64 minus = 0, add = 0;for (auto x : a) {if (x > mn)minus += x - mn;elseadd += mn - x;if (minus < add)return false;}return true;}bool check_max(i64 mx){i64 minus = 0, add = 0;for (auto x : a | views::reverse) {if (x < mx)add += mx - x;elseminus += x - mx;if (minus > add)return false;}return true;}void main(){int n;cin >> n;a.resize(n);for (auto& x : a)cin >> x;i64 l = 1, r = V;while (l < r) {i64 mid = (l + r + 1) >> 1;if (check_min(mid))l = mid;elser = mid - 1;}i64 mn = l;l = 1;r = V;while (l < r) {i64 mid = (l + r) >> 1;if (check_max(mid))r = mid;elsel = mid + 1;}i64 mx = l;cout << mx - mn << '\n';}
};int main()
{ios::sync_with_stdio(false);cin.tie(nullptr);cout.tie(nullptr);int t = 1;cin >> t;while (t-- > 0)Solution().main();return 0;
}
http://www.rkmt.cn/news/44748.html

相关文章:

  • 题解:AT_agc068_a [AGC068A] Circular Distance
  • 用 OKHttp 和 Retrofit 打造稳如磐石的网络请求:连接池与重试机制的实战指南 - 教程
  • 电脑监控软件,后台监控,千里眼监控
  • go sync.pool 学习笔记
  • 初识分布式训练
  • 电脑监控软件,后台监控,适合家庭电脑、员工电脑监控
  • 题解:P10856 【MX-X2-T5】「Cfz Round 4」Xor-Forces
  • 题解:AT_abc147_f [ABC147F] Sum Difference
  • 20231326《密码系统设计》第八周预习报告
  • 解放双手!使用Roslyn生成代码让你的 HTTP 客户端开发变得如此简单
  • 251109
  • electron-vite为linux打包成功,但是安装后运行无反应
  • 20231427田泽航第八周预习报告
  • PHP中各种超全局变量使用
  • 实用指南:TensorFlow2 Python深度学习 - TensorFlow2框架入门 - 自动微分和梯度
  • 浏览器Blockstack.org全名字段输入限制缺失漏洞分析
  • 2025年维修厂家口碑排行榜:专业制冷服务首选
  • 行业内专业的维修厂家功能亮点
  • 疑似 CSP-SB、CSP-JB、NOSb 考题泄露
  • 如何禁止谷歌浏览器更新提示
  • 拓扑 AC 2025 线上 NOIP 联测 #2
  • 完整教程:FocusAny 发布v1.1.0 插件搜索过滤,FAD文件优化,插件显示MCP服务
  • 2025年11月合肥智能家居源头厂家排行
  • 深入解析:数据结构 04 栈和队列
  • 深入解析:软件编程课程:课程目录介绍 总纲
  • CCPC哈尔滨站-J. 幻想乡的裁判长
  • 牛客网测试题
  • OZI-Project代码注入漏洞分析与修复方案
  • 创建第一个pygame游戏窗口
  • P10194 [USACO24FEB] Milk Exchange G 做题记录