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

2026.05.10 作业 - # AtCoder 457D 题解

问题描述

给定数组 a[1..n],每次操作可以选择一个下标 i,将 a[i] 增加 i。最多进行 k 次操作,求能达到的最小值的最大值 x(使得所有 a[i] >= x)。

核心思路

二分答案 + 贪心验证

  • 最小值最大 → 二分答案
  • 验证函数:计算达到目标值 mid 需要多少次操作

算法图解

atcoder_457d_diagram

图1: 操作示意

每次操作:
a[1]: +1, +1, +1, ...  (每次+1)
a[2]: +2, +2, +2, ...  (每次+2)
a[3]: +3, +3, +3, ...  (每次+3)
...
a[i]: +i, +i, +i, ...验证公式:
sum = Σ ceil((mid - a[i]) / i)= Σ (mid - a[i] + i - 1) / i

图2: 二分过程

L = 1, R = 2e18mid = (L + R + 1) / 2↓
验证 mid:sum > k → R = mid - 1sum ≤ k → L = mid↓
直到 L == R

为什么 R = 2e18

1. long long 上限: 9.22 × 10^18
2. R = 2 × 10^18 < 9 × 10^18 → 不会溢出 long long
3. 操作次数 k: 题目保证在安全范围内
4. 每次操作最大增量: i ≤ 2 × 10^5
5. 理论最大可达值: a[i] + k × i ≈ 10^23 (超出范围)
6. 但 2e18 是题目的合理上界,保证答案安全

代码注释

#include <bits/stdc++.h>
#define LL long long
using namespace std;int n;
LL k, a[200005];int main() {cin >> n >> k;for (int i = 1; i <= n; i++) cin >> a[i];LL L = 1, R = 2e18;  // 二分范围// 最小值最大 → 单调性: 值越大,需要的操作数越多while (L < R) {LL mid = (L + R + 1) / 2;  // 上取整,避免死循环// 计算达到 mid 需要多少次操作LL sum = 0;for (int i = 1; i <= n; i++) {if (a[i] >= mid) continue;  // 已经满足// 需要 (mid - a[i] + i - 1) / i 次操作// 向上取整: (x + y - 1) / ysum += (mid - a[i] + i - 1) / i;if (sum > k) break;  // 提前剪枝}// 操作数足够 → mid 可行,尝试更大if (sum <= k) L = mid;else R = mid - 1;  // mid 太大}cout << L << endl;return 0;
}

关键公式

第 i 个元素需要 t 次操作:
a[i] + t × i ≥ mid
t ≥ (mid - a[i]) / i
t = ceil((mid - a[i]) / i) = (mid - a[i] + i - 1) / i总操作数:
sum = Σ t (对所有 a[i] < mid 的 i)

复杂度分析

复杂度
时间 O(n × log R)
空间 O(n)

典型示例

输入:
n = 3, k = 4
a = [1, 5, 10]验证 mid = 6:
- a[1] = 1 < 6: (6-1+0)/1 = 5 次
- a[2] = 5 < 6: (6-5+1)/2 = 1 次
- sum = 6 > k = 4, 不可行验证 mid = 4:
- a[1] = 1 < 4: (4-1+0)/1 = 3 次
- a[2] = 5 ≥ 4:  跳过
- sum = 3 ≤ k, 可行答案: 4

核心思想

本质是二分答案的经典应用:
1. 最小值的最大值 → 具有单调性
2. 验证 mid 需要多少操作 → 贪心计算
3. sum ≤ k → mid 可行,L = mid
4. sum > k → mid 太大,R = mid - 1
http://www.jsqmd.com/news/852558/

相关文章:

  • 2026扬中市本地人必选的瓷砖空鼓专业维修公司TOP5推荐!卫生间空鼓翘边,厨房空鼓翘边,客厅空鼓翘边,全天响应,免费上门,5月专业瓷砖空鼓修复公司持证上岗师傅排名最新深度调研方案) - 一休修缮
  • AI 智能体 8 层架构:生产级系统构建指南
  • 【紧急更新】Midjourney 6.1镜头解析引擎已重构!3类旧版--v5指令全面失效,立即掌握新镜头协议兼容清单(含12个独家测试样本)
  • HTML转Word文档的终极解决方案:html-to-docx详解
  • 别再踩坑了!手把手教你解决RPM安装时的‘事务锁定’报错(附spec文件编写避坑指南)
  • 从零构建CI/CD流水线:核心原理与Bash脚本实践
  • 手把手教你用网络分析仪调试CGH40010F:从S参数异常反推管子损坏原因与状态
  • 机加工行业如何做线上推广获客?2026全网获客指南与服务商盘点 - 企业名录优选推荐
  • Folcolor:14种色彩让Windows文件夹管理效率提升300%
  • 从零到一:华大HC32L110C6PA GPIO操作避坑指南(附完整代码)
  • 亨得利专业腕表检测保养价格全解析:2026年六大城市实测,从免费检测到深度养护,一次说清楚所有费用 - 亨得利腕表维修中心
  • Py-ART气象雷达分析终极指南:从零开始掌握20+雷达数据处理
  • 2026兖州市本地人必选的瓷砖空鼓专业维修公司TOP5推荐!卫生间空鼓翘边,厨房空鼓翘边,客厅空鼓翘边,全天响应,免费上门,5月专业瓷砖空鼓修复公司持证上岗师傅排名最新深度调研方案) - 一休修缮
  • 2026宜宾市本地人必选的瓷砖空鼓专业维修公司TOP5推荐!卫生间空鼓翘边,厨房空鼓翘边,客厅空鼓翘边,全天响应,免费上门,5月专业瓷砖空鼓修复公司持证上岗师傅排名最新深度调研方案) - 一休修缮
  • 终极SSDD数据集指南:如何快速掌握SAR舰船检测核心技术
  • HCV Core Protein (51-60) ;Lys-Thr-Ser-Glu-Arg-Ser-Gln-Pro-Arg-Gly
  • 从高斯-克吕格到UTM:在QGIS里搞定国内卫星影像与地形图的坐标匹配
  • 使用Nodejs与Taotoken构建稳定可靠的AI对话服务后端
  • 2026义马市本地人必选的瓷砖空鼓专业维修公司TOP5推荐!卫生间空鼓翘边,厨房空鼓翘边,客厅空鼓翘边,全天响应,免费上门,5月专业瓷砖空鼓修复公司持证上岗师傅排名最新深度调研方案) - 一休修缮
  • AutoMdxBuilder:5分钟快速制作专业MDX词典的终极指南
  • 揭秘导师不会说:8款免费AI写毕业论文降重换高级表达工具 - 麟书学长
  • 星动纪元拿下 RoboChallenge冠军!17项家务活斩获第一
  • 2026年新能源汽车厂、手机厂防水研发效率提升60%:IPX9防水试验箱厂家定制案例 - 资讯速览
  • PyMAPDL:下一代Python驱动的ANSYS MAPDL革命性接口
  • 华熙设备科技:华南RoHS检测仪器领域的技术深耕者——从发展节点、核心业务到社会责任的全景解读 - 品牌优选官
  • 为OpenClaw工作流配置Taotoken作为统一模型供应商
  • 2026全国油辣子TOP五!这些品牌地道川味广受好评 - 十大品牌榜
  • 2026重庆车间通风降温设备推荐:本地实力企业盘点与选型参考 - 深度智识库
  • 2026年法兰盘公司权威推荐榜:法兰盘制造商哪家好/法兰盘源头厂家怎么加盟/法兰盘供应企业哪家强 - 品牌推广大师
  • 书籍分享:《VirtualLab Fusion物理光学实验教程》