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

题解:AtCoder AT_awc0005_d Splitting Delivery Packages

本文分享的必刷题目是从蓝桥云课洛谷AcWing等知名刷题平台精心挑选而来,并结合各平台提供的算法标签和难度等级进行了系统分类。题目涵盖了从基础到进阶的多种算法和数据结构,旨在为不同阶段的编程学习者提供一条清晰、平稳的学习提升路径。

欢迎大家订阅我的专栏:算法题解:C++与Python实现!

附上汇总贴:算法竞赛备考冲刺必刷题(C++) | 汇总


【题目来源】

AtCoder:D - Splitting Delivery Packages

【题目描述】

Takahashi is in charge of delivery planning at a shipping company.
高桥负责一家货运公司的送货路线规划工作。

Today, he needs to create a plan to deliverN NNpackages usingK KKtrucks.
今天,他需要制定一个使用K KK辆卡车运送N NN个包裹的计划。

Each package is numbered from1 11toN NN, and the weight of packagei iiisA i A_iAi.
每个包裹编号从1 11N NN,且包裹i ii的重量为A i A_iAi

To improve delivery efficiency, he decided to arrange the packages1 , 2 , … , N 1, 2, \ldots, N1,2,,Nin this order and divide them intoK KKcontiguous segments, each containing at least1 11package, and assign the packages in each segment to one truck. Every package belongs to exactly one segment, and there is a one-to-one correspondence between theK KKsegments and theK KKtrucks.
为了提高送货效率,他决定将包裹1 , 2 , … , N 1, 2, …, N1,2,,N按此顺序排列,并将其分割为K KK个连续段(每段至少包含1 11个包裹),然后将每段中的包裹分配给一辆卡车。每个包裹恰好属于一个段,并且K KK个段与K KK辆卡车之间存在一一对应关系。

For each truck, the sum of the weights of the packages assigned to that truck is called theloadof that truck.
对于每辆卡车,分配给该卡车的包裹重量之和称为该卡车的载重。

Takahashi wants to maximize the smallest load among theK KKtrucks.
高桥希望最大化K KK辆卡车中最小的载重。

Considering all possible ways to divide the packages, find the maximum possible value of “the minimum load among theK KKtrucks.”
考虑所有可能的分割包裹方式,求"K KK辆卡车中最小的载重"的最大可能值。

【输入】

N NNK KK
A 1 A_1A1A 2 A_2A2… \ldotsA N A_NAN

  • The first line contains an integerN NNrepresenting the number of packages and an integerK KKrepresenting the number of trucks, separated by a space.
  • The second line containsN NNintegersA 1 , A 2 , … , A N A_1, A_2, \ldots, A_NA1,A2,,ANrepresenting the weight of each package, separated by spaces.

【输出】

Print in one line the maximum possible value of the minimum load among theK KKtrucks when the packages are divided optimally.

【输入样例】

5 2 1 2 3 4 5

【输出样例】

6

【解题思路】

【算法标签】

#整数二分#

【代码详解】

#include<bits/stdc++.h>usingnamespacestd;#defineintlonglongconstintN=100005;intn,k;// n: 数组长度,k: 所需分段数inta[N];// 数组// 检查是否能够将数组分割为至少k段,使得每段和至少为xboolcheck(intx){intsum=0,ans=0;// sum: 当前段的和,ans: 已分割的段数for(inti=1;i<=n;i++){if(sum+a[i]>=x)// 如果将当前元素加入会使段和达到x{ans++;// 段数加1sum=0;// 重置当前段和}else{sum+=a[i];// 将当前元素加入当前段}}returnans>=k;// 返回是否能分割出至少k段}signedmain(){cin>>n>>k;// 读入数组长度和所需段数for(inti=1;i<=n;i++){cin>>a[i];// 读入数组}intl=0,r=1e18;// 二分查找范围while(l<r)// 二分查找{intmid=(l+r+1)/2;// 计算中点if(check(mid))// 如果mid可行{l=mid;// 尝试更大的值}else{r=mid-1;// 尝试更小的值}}cout<<l<<endl;// 输出最大的满足条件的xreturn0;}

【运行结果】

5 2 1 2 3 4 5 6
http://www.jsqmd.com/news/721786/

相关文章:

  • Go语言Goroutine与Channel深度解析
  • 前端工程化架构设计
  • 【2024最新】R语言+Hugging Face Pipeline偏见审计协议:5类统计偏差(性别/种族/地域/年龄/职业)一键识别与p值动态校正
  • codex模拟autosota方案
  • 2026年国内核心机器人租赁平台综合实力排行盘点 - 奔跑123
  • 内网渗透核心技术:隧道技术完全指南——原理、工具与2026年实战解析
  • 【官方未公开的DOTS 2.0性能开关】:启用UnsafeHashMap优化+禁用Auto-RefCounting+强制Chunk对齐,实测CPU占用下降41.6%(附可复现Benchmark工程)
  • 企业级java+LangChain4j-RAG系统 限流熔断降级
  • Go语言Context深度解析与工程实践
  • RuoYi-Vue项目左侧菜单样式全局覆盖实战:避免污染其他页面的正确姿势
  • 从CPU到密码学:聊聊逻辑门(AND/OR/XOR)在真实世界里的硬核应用
  • 渗透测试入门
  • 电脑黑屏F1报错怎么解决 开机显示器不亮 键盘灯不亮
  • 如何选择适合项目的「限流 / 熔断 / 降级」方案
  • Pixelle-Video完整指南:如何用AI全自动生成专业短视频
  • 告别模糊照片:用PMRID模型实战训练你的专属图像去噪数据集(附完整代码与避坑指南)
  • 魔兽争霸3现代兼容性终极指南:5分钟解决所有运行问题
  • 超市购物车里的秘密:用Python手把手教你Apriori算法找商品关联(附完整代码)
  • FuturesDesk 集成 OMC 多智能体编排提效
  • Linux cgroup 使用指南:从原理到实践
  • M4Markets vs FP Markets vs XM:平台稳定性与高波动时的表现
  • 孩子不爱背单词?试试让手指先「记住」——打字侠英语可以这样用
  • 【GPR回归预测】双向长短期记忆神经网络结合高斯过程回归(BiLSTM-GPR)的多变量回归预测 (多输入单输出)【含Matlab源码 15399期】
  • 从安防到短视频:聊聊视频分割技术在我们身边的5个真实应用
  • Cursor Free VIP终极指南:三步解锁Cursor Pro永久免费使用
  • 在 Windows 上使用 Hyper-V 虚拟机准备安装OpenClaw
  • 1993-2023年各国各行业IFR工业机器人数据
  • 你的棋盘格摆对了吗?Ubuntu 20.04 + ROS相机标定实战避坑指南(附常见错误排查)
  • 爆款引擎:2026流量内卷下的SEO破局密码
  • 如何开展高质量用户访谈?掌握 UX 研究的 4 个核心要素与提问艺术