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

UVa 473 Raucous Rockers

题目描述

题目要求将nnn首歌曲按创作时间顺序分配到mmm张光盘上,每张光盘容量为ttt分钟,每首歌曲不能拆分到多张光盘。目标是最大化被选中的歌曲数量。

输入格式

第一行一个整数DDD,表示数据集的个数,后面跟一个空行。每个数据集的第一行包含三个整数nnntttmmm。第二行包含nnn个整数,表示每首歌曲的长度(单位为分钟)。每个ti<tt_i < tti<t,且∑ti>m×t\sum t_i > m \times tti>m×t。两个连续数据集之间由一个空行分隔。

输出格式

对于每个数据集,输出一行一个整数,表示能放入mmm张光盘的最大歌曲数量。两个连续数据集的输出之间由一个空行分隔。

样例

输入

2 10 5 3 3,5,1,2,3,5,4,1,1,5 1 1 1 1

输出

6 1

题目分析

本题的核心是在保持歌曲原有顺序的前提下,将它们分配到mmm个容量为ttt的背包中,使得放入的歌曲数量最多。这是一个多维背包问题,可以用动态规划求解。

动态规划定义

dp[i][j][k]\textit{dp}[i][j][k]dp[i][j][k]表示考虑前iii首歌曲,使用了jjj张光盘,且当前光盘已用容量为kkk时,能够放入的最大歌曲数量。但这样状态数为n×m×tn \times m \times tn×m×tnnn最大未知,t≤?t \le ?t?,可接受。

状态转移:

  • 不选第iii首歌曲:dp[i][j][k]=max⁡(dp[i][j][k],dp[i−1][j][k])\textit{dp}[i][j][k] = \max(\textit{dp}[i][j][k], \textit{dp}[i-1][j][k])dp[i][j][k]=max(dp[i][j][k],dp[i1][j][k])
  • 选第iii首歌曲:
    • 若放入当前光盘(k+ti≤tk + t_i \le tk+tit):dp[i][j][k+ti]=max⁡(dp[i][j][k+ti],dp[i−1][j][k]+1)\textit{dp}[i][j][k + t_i] = \max(\textit{dp}[i][j][k + t_i], \textit{dp}[i-1][j][k] + 1)dp[i][j][k+ti]=max(dp[i][j][k+ti],dp[i1][j][k]+1)
    • 若放入新光盘(j<mj < mj<m):dp[i][j+1][ti]=max⁡(dp[i][j+1][ti],dp[i−1][j][k]+1)\textit{dp}[i][j+1][t_i] = \max(\textit{dp}[i][j+1][t_i], \textit{dp}[i-1][j][k] + 1)dp[i][j+1][ti]=max(dp[i][j+1][ti],dp[i1][j][k]+1)

简化

由于nnnmmmttt的具体范围未给出,但ti<tt_i < tti<t,且∑ti>m×t\sum t_i > m \times tti>m×t,可以假设ttt不大。实际上,可以使用一维DP\texttt{DP}DP优化空间。

算法

  1. 初始化dp[0][0]=0\textit{dp}[0][0] = 0dp[0][0]=0,其他为−∞-\infty
  2. 遍历每首歌曲iii
    • 从后向前更新(避免同一首歌被多次使用):
      • 对于每张光盘jjj(从m−1m-1m1000),对于每个容量kkk(从t−tit - t_itti000),更新放入当前光盘的状态。
      • 对于每张光盘jjj(从m−1m-1m1000),对于每个容量kkk,更新放入新光盘的状态。
  3. 最终答案为max⁡0≤j≤m,0≤k≤tdp[j][k]\max_{0 \le j \le m, 0 \le k \le t} \textit{dp}[j][k]max0jm,0ktdp[j][k]

复杂度分析

时间复杂度O(n×m×t)O(n \times m \times t)O(n×m×t),空间复杂度O(m×t)O(m \times t)O(m×t)。对于合理范围内的nnnmmmttt,可接受。

代码实现

// Raucous Rockers// UVa ID: 473// Verdict: Accepted// Submission Date: 2025-12-03// UVa Run Time: 0.000s//// 版权所有(C)2025,邱秋。metaphysis # yeah dot net#include<bits/stdc++.h>usingnamespacestd;intmain(){ios::sync_with_stdio(false);cin.tie(nullptr);intdatasets;cin>>datasets;for(intds=0;ds<datasets;++ds){if(ds)cout<<'\n';intn,t,m;cin>>n>>t>>m;vector<int>songs(n);charcomma;for(inti=0;i<n;++i){cin>>songs[i];if(i<n-1)cin>>comma;}// dp[j][k]: 使用 j 张光盘,当前光盘已用 k 分钟时,最多歌曲数vector<vector<int>>dp(m+1,vector<int>(t+1,-1));dp[0][0]=0;for(inti=0;i<n;++i){intlength=songs[i];// 逆序更新,避免重复使用当前歌曲for(intj=m;j>=0;--j){for(intk=t;k>=0;--k){if(dp[j][k]<0)continue;// 尝试放入当前光盘if(k+length<=t){dp[j][k+length]=max(dp[j][k+length],dp[j][k]+1);}// 尝试放入新光盘if(j<m){dp[j+1][length]=max(dp[j+1][length],dp[j][k]+1);}}}}intans=0;for(intj=0;j<=m;++j){for(intk=0;k<=t;++k){ans=max(ans,dp[j][k]);}}cout<<ans<<'\n';}return0;}
http://www.jsqmd.com/news/1007644/

相关文章:

  • 怎么编写一个 Shell 脚本,从 `/var/log/nginx/access.log` 中统计访问量最高的前 3 个 IP,并按访问次数从高到低输出
  • 3分钟搞定Axure中文界面:告别英文烦恼的终极指南
  • 2026年AI论文写作工具实测报告:5款神器从文献到降重一站式避坑指南
  • 【无人机分配】基于纳什均衡和遗传算法进行无人机群目标分配附Matlab代码
  • 2026金融行业香港EMBA客观测评与理性选型指南 - 品牌2026推荐
  • WechatBakTool终极指南:3步轻松备份你的微信聊天记录
  • 2026科技前沿向国内EMBA中立测评与科学选型指南 - 品牌2026推荐
  • 别再死记真值表了!通过Multisim仿真,直观理解74LS148优先编码器的工作原理
  • N皇后遗传算法实战:Python手写GA核心代码与调参精髓
  • QuPath OpenSlide扩展加载失败:命令行模式下.mrxs文件格式支持的技术困局
  • Windows窗口置顶神器:3步解决多任务窗口遮挡难题的完整指南
  • 别被坑了!2026实测好用的AI论文写作工具|实测必入避坑版
  • 海外商标注册平台全攻略:跨境卖家如何选择靠谱的海外商标代理机构? - 速递信息
  • MC68341芯片选与RTC配置实战:从寄存器原理到嵌入式系统稳定设计
  • 高层次综合设计乒乓buffer(double-buffer/pingpong-buffer)
  • 2026年6月诚信的马弗炉供应商口碑分析,高精度测硫仪/环保型对辊破碎机/实验室小型对辊破碎机,马弗炉制造企业推荐 - 品牌推荐师
  • 少走弯路:盘点2026年王者级的AI论文写作工具
  • 怎么编写一个shell脚本,用户输入软件包自动识别系统,然后安装
  • FPGA时序收敛实战:手把手教你用Vivado正确处理时钟域与生成时钟
  • 2026手机端外语口音语音克隆工具实测:口音还原、语种覆盖选型指南 - GrowthUME
  • 5G URLLC低时延保障:深入解析PUSCH Repetition Type B与无效符号处理机制
  • 嵌入式开发硬核技能:SPI与Quad Timer寄存器级编程实战解析
  • 别光看理论!拆解MIPS指令字:LW、SW这些信号在CPU单总线里到底怎么‘蹦’出来的?
  • Xilinx FPGA上跑的8路并行低通滤波器工程包(含MATLAB信号生成与频谱分析)
  • 手把手复现:用Python仿真验证电容容抗公式1/(j*2*pi*f*C),附代码与波形分析
  • 2026科技驱动型EMBA客观测评:理性选型与项目对比 - 品牌2026推荐
  • 【jupyter notebook】中文符号需要按两次才能输入
  • 高数期末救命!72道不定积分题里,这5类‘换元法’套路必须掌握(附解题模板)
  • 别再只盯着准确率了!手把手教你用颜色矩+SVM做图像分类时的模型调优与评估陷阱
  • 2026年6月评价高的电加热器实力厂家哪家靠谱,小型导热油加热器/反应釜油加热器/空气电加热器,电加热器企业哪家强 - 品牌推荐师