UVa 624 CD
📅 2026/7/4 22:41:39
👁️ 次浏览
题目描述你有一盘长度为NNN分钟的磁带以及一张CD\texttt{CD}CD上有若干首曲目每首曲目时长已知整数。你需要从CD\texttt{CD}CD中选择若干首曲目使得这些曲目的总时长不超过NNN并且尽可能接近NNN即剩余未使用的磁带空间最小。如果存在多种最优方案输出任意一种均可但需要按照曲目在CD\texttt{CD}CD上的原始顺序输出所选曲目的时长并最后输出总时长。输入格式输入包含多组数据每组数据一行。每行第一个整数为NNN磁带总长度第二个整数为曲目数量ttt随后ttt个整数依次为各曲目的时长。输入直到文件结束。输出格式对于每组数据输出一行首先按原顺序输出被选中的曲目时长每个时长后跟一个空格然后输出sum:和总时长。所有数字之间用空格分隔。样例输入5 3 1 3 4 10 4 9 8 4 2 20 4 10 5 7 4 90 8 10 23 1 2 3 4 5 7 45 8 4 10 44 43 12 9 8 2输出1 4 sum:5 8 2 sum:10 10 5 4 sum:19 10 23 1 2 3 4 5 7 sum:55 4 10 12 9 8 2 sum:45题目分析本题本质上是经典的0/1\texttt{0/1}0/1背包问题但物品数量很小t≤20t \le 20t≤20因此可以直接枚举所有子集选择总时长不超过NNN且总时长最大的组合。若多个组合总时长相同输出任意一个均可。由于2201,048,5762^{20} 1,048,5762201,048,576完全可以在时限内完成。代码中使用了带有剪枝的回溯搜索进一步提高了效率。要求输出所选曲目时必须保持它们在输入中的原始顺序因此我们只需按顺序扫描并标记是否选择即可。解题思路暴力枚举回溯法使用深度优先搜索DFS\texttt{DFS}DFS遍历所有可能的子集。每个曲目有两种状态选择或不选择。搜索过程中维护当前已选总时长sum。当sum超过N时剪枝。当搜索完所有曲目后若sum大于已记录的最优值max_sum则更新最优值和对应的选择方案。剪枝优化为了提高效率代码中预先计算了后缀和数组tails[i]表示从第i首曲目到最后一首曲目的时长之和。在递归搜索时若当前sum加上从当前曲目到末尾的所有曲目总时长仍然小于或等于已知最优值max_sum则即使全部选择也无法超越当前最优解因此可以直接剪枝代码中if (sum tails[i] max_sum) return;。此外为了避免重复组合搜索时按顺序依次决定每首曲目是否选择而不是在递归内部再循环枚举起始位置代码中depth参数虽未使用但for循环从depth开始实际上起到了控制顺序的作用。记录方案使用全局数组used和best分别标记当前搜索路径和最优路径的选择情况1表示选择。当sum max_sum时将used复制到best中。最后根据best输出对应曲目时长。特殊情况如果所有曲目总时长不超过N则直接全部选择即可无需搜索代码中首先判断了这一点。复杂度分析最坏情况下需要枚举2t2^t2t种子集t≤20t \le 20t≤20约10610^6106种每次复制方案数组代价为O(t)O(t)O(t)总时间复杂度O(t⋅2t)O(t \cdot 2^t)O(t⋅2t)完全可以接受。空间复杂度O(t)O(t)O(t)。代码实现// CD// UVa ID: 624// Verdict: Accepted// Submission Date: 2016-08-22// UVa Run Time: 0.000s//// 版权所有C2016邱秋。metaphysis # yeah dot net#includebits/stdc.husingnamespacestd;intN,tracks,minutes[25],tails[25];intmax_sum,used[25],best[25];voidbacktrack(intdepth,intsum){if(summax_sum){max_sumsum;copy(used,used25,best);}if(depthtracks){for(intidepth;itracks;i){if(sumtails[i]max_sum)return;if(used[i]0summinutes[i]N){used[i]1;backtrack(depth1,summinutes[i]);used[i]0;}}}}intmain(){cin.tie(0);cout.tie(0);ios::sync_with_stdio(false);while(cinN){cintracks;intsum0;for(inti0;itracks;i){cinminutes[i];summinutes[i];}if(sumN){for(inti0;itracks;i)coutminutes[i] ;coutsum:sum\n;}else{memset(tails,0,sizeof(tails));tails[tracks-1]minutes[tracks-1];for(intitracks-2;i0;i--)tails[i]tails[i1]minutes[i];max_sum0;memset(used,0,sizeof(used));backtrack(0,0);for(inti0;itracks;i)if(best[i])coutminutes[i] ;coutsum:max_sum\n;}}return0;}总结本题是一个小规模的0/1\texttt{0/1}0/1背包问题由于物品数量很少不超过202020直接枚举所有子集即可。代码中采用了回溯加后缀和剪枝进一步提高了效率。输出时保持曲目的原始顺序只需按输入顺序输出被选中的曲目时长即可。该解法简洁高效适合作为回溯法入门练习。
1. 项目概述:一次典型的容器安全更新实战 最近在维护阿里云上的Alibaba Cloud Linux 3(简称AL3)服务器时,安全扫描工具突然弹出了一个名为 ALINUX3-SA-2024:0050 的漏洞告警,涉及的核心组件是 container-tools:rhel…
📅 2026/7/4 22:41:39
1. 鲸鱼WOA-XGBoost模型概述 在数据科学和机器学习领域,参数优化一直是提升模型性能的关键环节。今天我要分享的是一个将鲸鱼优化算法(WOA)与XGBoost相结合的预测建模方案,这个组合在我最近的项目中表现相当出色。 这个模型的核心优势在于: …
📅 2026/7/4 22:41:39
🚀 30款热门AI模型一站整合,DeepSeek/GLM/Claude 随心用,限时 5 折。 👉 点击领海量免费额度 最近在开发AI应用时,很多开发者都遇到了一个共同的痛点:项目初期基于OpenAI的Codex或Claude Code等工具链搭…
📅 2026/7/4 22:41:39
1. 项目概述:从“提示工程”到“上下文工程”的范式跃迁 如果你和我一样,在过去两年里深度参与了LLM应用开发,那么“提示工程”(Prompt Engineering)这个词你一定不陌生。我们曾花费大量时间,像炼金术士一样…
📅 2026/7/4 23:45:46
博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…
📅 2026/7/4 23:45:46
Pyfa终极指南:免费跨平台EVE Online舰船配装工具 【免费下载链接】Pyfa Python fitting assistant, cross-platform fitting tool for EVE Online 项目地址: https://gitcode.com/gh_mirrors/py/Pyfa
Pyfa(Python Fitting Assistant)是…
📅 2026/7/4 23:45:46
大家好,我是专注于计算机视觉与深度学习的技术博主。如果你正在为如何系统学习YOLO目标检测算法而烦恼,面对从v1到v13的庞大体系不知从何下手,那么你来对地方了。本文将为你呈现一份结构清晰、内容详尽的YOLO系列“从入门到精通”全景式指南。…
📅 2026/7/4 23:45:46
一句话答案:Mermaid 本质是文本图表语法,AI 回答复制到 Word 后变成 flowchart TD 这类代码时,需要先渲染成 SVG/PNG,再插入 Word;如果是长 AI 文档,可以用结构化导出流程统一处理。1. 问题现象AI 常会输出…
📅 2026/7/4 23:45:46
Windhawk终极指南:5分钟学会安全自定义Windows界面和功能 【免费下载链接】windhawk The customization marketplace for Windows programs: https://windhawk.net/ 项目地址: https://gitcode.com/gh_mirrors/wi/windhawk
想要个性化Windows系统却担心风险&…
📅 2026/7/4 23:43:46
Axure RP中文界面终极解决方案:3分钟告别英文困扰 【免费下载链接】axure-cn Chinese language file for Axure RP. Axure RP 简体中文语言包。支持 Axure 11、10、9。不定期更新。 项目地址: https://gitcode.com/gh_mirrors/ax/axure-cn
还在为Axure RP的英…
📅 2026/7/4 0:00:50
1. MC6470与STM32F745VG的黄金组合解析在工业自动化和机器人控制领域,传感器与微控制器的协同工作能力直接决定了系统的响应速度和定位精度。MC6470作为一款6自由度惯性测量单元(6DOF IMU),与STM32F745VG这款基于ARM Cortex-M7内核的高性能微控制器组合&…
📅 2026/7/4 0:00:50
1. 项目概述:为什么要在本地跑 SAM Audio?这不只是“能用”,而是“必须用”SAM Audio——全称是 Segment Anything Model for Audio,不是 Meta 那个视觉领域的 SAM(Segment Anything Model)的简单移植&…
📅 2026/7/4 0:00:50
6个月前的2025年12月,Boris Cherny 公开宣布自己卸载了 IDE。一时间,Vibe Coding 成了全行业最热的话题。6个月后,当我们回过头来拉一份真实账本,发现事情远没有"一句话生成一个App"那么浪漫。本文从产品经理和研发两个…
📅 2026/7/4 21:28:54
引言:审计结束三个月了,审计员的权限还没关某城商行每年按照监管要求开展至少一次数据安全审计。审计期间,内审部门需要抽样检查各类业务数据——交易流水、客户信息、员工操作日志、权限配置记录。这些数据分布在不同系统中,审计…
📅 2026/7/4 21:28:51
目录
第一步:选对模板,省心一半
第二步:打开扫码点餐功能
开启功能按钮
桌台管理与桌码生成
第三步:个性化设计,打造品牌感
调整点餐页面
设置点餐规则 你还在让顾客站着排队点餐吗?2025年ÿ…
📅 2026/7/4 5:07:51
在业务中快速构建一个能理解私有文档、准确回答专业问题的智能助手,是很多开发团队面临的共同挑战。传统方案往往需要从零开始搭建复杂的 RAG(检索增强生成)系统,涉及文档解析、向量化、检索、大模型调用等多个环节,整…
📅 2026/7/4 5:10:18
FAE放射组学分析工具:医学影像特征探索的完整解决方案 【免费下载链接】FAE FeAture Explorer 项目地址: https://gitcode.com/gh_mirrors/fae/FAE
你是否曾经面对海量医学影像数据感到无从下手?想要从CT、MRI等影像中提取有价值的定量特征&#…
📅 2026/7/4 17:36:47