恒美微站 Logo 恒美微站
  • 首页
  • 关于我们
  • 建站服务
  • 主题模板
  • 案例展示
  • 资讯中心
  • 联系我们

UVa 945 Loading a Cargo Ship

  • 首页
  • 资讯中心
  • /
  • UVa 945 Loading a Cargo Ship

相关资讯

Windows禁止更新和关闭Window defender小工具 2026/10/2 12:45:18
卡牌翻开一座城堡,就算冒险关卡成立了吗?实测6个抽取与状态节点 2026/10/2 12:45:18
人际立方-互联网中人际关系网络图谱 2026/10/2 12:45:18

最新资讯

douyin-downloader 抖音批量下载与去水印使用指南:5 分钟跑通第一个下载
best-of-ml-python 2023-11-16 周报解读:评分体系、趋势信号与上榜机器学习项目全解析
ML4W Dotfiles 的 Waybar Starter 主题定制指南:基于 Hyprland 构建你自己的状态栏主题
快速下载 Stability AI 模型权重并跑通首次推理:SDXL、SVD 到 SV4D 的三条任务完整指南
YOLOv7 部署到 Triton Inference Server:TensorRT 引擎导出、模型仓库配置与客户端推理全流程指南
Git仓库初始化与项目保存全攻略:从git init到远程推送实战

今日推荐

企业AI转型实战指南:从场景选择到落地避坑的完整路线图
OpenRig:本地大模型服务编排的轻量级运行时框架
夸克网盘1TB免费扩容领取全攻略:新老用户实操流程与避坑指南

本周热门

从像素到笔画:srt-whiteboard-animation骨架笔迹追踪实现(Zhang-Suen细化+8邻接追踪)
网站建设的英语怎么说?别只背单词,看完这套安全完整流程才敢上线
新手入门看这篇:建设网站加盟避坑指南与SEO实操

本月精选

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证
2026 大模型集体涨价:用 Python 做企业 Token 成本测算与选型避坑(附配置)

UVa 945 Loading a Cargo Ship

发布时间:2026/10/2 12:45:18
UVa 945 Loading a Cargo Ship 题目描述一艘船最多有999个货柜编号为111到999每个货柜有特定的最大承重能力不超过999999999吨。每个包裹重量不超过999吨船上最多装载999999999个包裹。包裹通过传送带依次到达由货物路由器按照以下算法分配到货柜规则1\texttt{1}1. 首先只选择装载包裹数量最少的货柜。规则2\texttt{2}2. 然后在选出的货柜中只选择可用承重能力最大的货柜。规则3\texttt{3}3. 进一步筛选选择编号最小的货柜。规则4\texttt{4}4. 如果选中的货柜无法承载该包裹则装船过程结束。要求模拟该装载过程输出每个货柜的最终内容、已装载包裹总重量、剩余可用重量以及未装载包裹总重量。输入格式输入包含多个测试用例用例之间用空行分隔。每个测试用例首先给出货柜数量ccc1≤c≤91 \le c \le 91≤c≤9随后ccc行给出每个货柜的最大承重cwicwicwi1≤cwi≤9991 \le cwi \le 9991≤cwi≤999。接着是一个空行然后给出包裹数量ppp1≤p≤9991 \le p \le 9991≤p≤999随后ppp行给出每个包裹的重量pwipwipwi1≤pwi≤91 \le pwi \le 91≤pwi≤9。保证所有包裹总重量不超过所有货柜总承重。输出格式对于每个测试用例输出货柜的最终内容按从顶部到底部的顺序每行对应所有货柜在同一层的内容空位用:表示随后是一个空行然后是已装载包裹总重量、剩余可用重量和未装载包裹总重量。相邻测试用例之间输出一个空行。样例输入3 5 10 5 8 4 3 2 1 1 2 3 4样例输出:3: 2 1 1 3 4 2 1 2 3 cargo weight: 16 unused weight: 4 unloaded weight: 4题目分析本题要求模拟一个按特定规则分配包裹的装载过程。核心在于准确实现四条选择规则并正确处理装载终止条件。货柜数量最多为999包裹数量最多为999999999因此直接模拟即可无需复杂优化。规则1\texttt{1}1要求选择装载包裹数量最少的货柜。规则2\texttt{2}2在规则1\texttt{1}1的基础上选择可用承重最大的货柜。规则3\texttt{3}3在规则2\texttt{2}2的基础上选择编号最小的货柜。规则4\texttt{4}4检查选中的货柜是否能承载当前包裹若能则装入并更新货柜状态若不能则装载过程立即终止后续所有包裹均视为未装载。输出格式较为特殊需要将每个货柜的内容按从顶部到底部的顺序逐层打印每层对应所有货柜在该层的内容若某货柜在该层没有包裹则输出:。分隔线由2c−12c - 12c−1个等号组成货柜编号行由111到ccc组成。解题思路使用二维向量cargo存储每个货柜已装载的包裹重量其中cargo[i]表示第iii个货柜的包裹列表按装入顺序排列。使用数组capacity记录每个货柜的剩余可用承重初始值为最大承重。使用布尔变量working标记装载过程是否仍在进行。对于每个包裹若working为真则遍历所有货柜按照规则1\texttt{1}1到规则3\texttt{3}3选出最佳货柜。具体比较逻辑为优先比较包裹数量越少越优若数量相同比较剩余承重越大越优若仍相同比较编号越小越优。选出最佳货柜后检查其剩余承重是否大于等于当前包裹重量若是则装入包裹更新剩余承重和已装载总重量若否则将当前包裹计入未装载重量并将working置为假。若working已为假则直接将包裹计入未装载重量。所有包裹处理完毕后计算每个货柜的最大包裹数量maxPackage然后从最高层到最低层逐层输出。对于每一层遍历所有货柜若该货柜在该层有包裹则输出包裹重量否则输出:。层间用空格分隔。之后输出分隔线、货柜编号行、空行以及三个统计量。时间复杂度为O(p×c)O(p \times c)O(p×c)空间复杂度为O(pc)O(p c)O(pc)对于题目规模完全可行。代码实现// Loading a Cargo Ship// UVa ID: 945// Verdict: Accepted// Submission Date: 2017-03-14// UVa Run Time: 0.000s//// 版权所有C2017邱秋。metaphysis # yeah dot net#includebits/stdc.husingnamespacestd;intmain(intargc,char*argv[]){cin.tie(0);cout.tie(0);ios::sync_with_stdio(false);intcases0,container;while(cincontainer){vectorvectorintcargo(container);vectorintcapacity(container);vectorintusedWeight(container,0);inttotalCapacity0;for(inti0;icontainer;i){cincapacity[i];totalCapacitycapacity[i];}intpackage,weight;inttotalWeight0,cargoWeight0,unusedWeight0,unloadedWeight0;boolworkingtrue;cinpackage;for(inti0;ipackage;i){cinweight;totalWeightweight;if(working){intbest0;for(intj1;jcontainer;j){if(cargo[j].size()cargo[best].size())bestj;else{if(cargo[j].size()cargo[best].size())if(capacity[j]capacity[best])bestj;}}if(capacity[best]weight){cargo[best].push_back(weight);capacity[best]-weight;cargoWeightweight;}else{unloadedWeightweight;workingfalse;}}elseunloadedWeightweight;}if(cases0)cout\n;intmaxPackage0;for(inti0;icontainer;i)maxPackagemax(maxPackage,(int)cargo[i].size());for(intimaxPackage-1;i0;i--){for(intj0;jcontainer;j){if(j0)cout ;if(icargo[j].size())coutcargo[j][i];elsecout:;}cout\n;}for(inti1;i(2*container-1);i)cout;cout\n;for(inti1;icontainer;i){if(i1)cout ;couti;}cout\n;cout\n;coutcargo weight: cargoWeight\n;coutunused weight: (totalCapacity-cargoWeight)\n;coutunloaded weight: unloadedWeight\n;}return0;}总结本题的关键在于准确实现货柜选择的优先级规则并注意装载终止后所有后续包裹均计入未装载重量。输出格式较为繁琐需要按层打印货柜内容空位用:表示并注意分隔线与编号行的对齐。时间复杂度为O(p×c)O(p \times c)O(p×c)空间复杂度为O(pc)O(p c)O(pc)能够高效处理题目规模的数据。

关于恒美微站

恒美微站专注于为个体商户、工作室提供极简自助建站服务,让每个人都能轻松拥有专业网站。

快速链接

  • 关于我们
  • 建站服务
  • 主题模板
  • 案例展示
  • 资讯中心

服务项目

  • 可视化建站
  • 拖拽编辑
  • 主题定制
  • SEO 优化
  • 网站托管

联系方式

  • 📍 地址:北京市朝阳区建国路 88 号
  • 📞 电话:400-888-8888
  • ✉️ 邮箱:info@hmyw.cn
  • 🕐 时间:周一至周日 9:00-18:00

© 2024 恒美微站 hmyw.cn 版权所有 | 京 ICP 备 12345678 号