原文

题意: 有n首音乐,m个磁盘,磁盘容量都是t,一首音乐不能被分割到两个盘里,问最多能在磁盘里放置多少音乐。要求音乐的放置不能逆序。即下标大的不能放在下标小的前面。

解法: 设状态dp[i][j][k]为在第i首音乐,已放置到第j个磁盘,且第j个磁盘已使用k个单位空间时能放置的最大数量。

状态的转移:

1: 当不放置这首歌时,dp[i][j][k] = max(dp[i][j][k], dp[i-1][j][k])。

2: 当这首歌是j盘的第一首歌时, dp[i][j][k] = max(dp[i][j][k], dp[i-1][j-1][t])。

3: 当这首歌不是j盘的第一首歌时,dp[i][j][k] = max(dp[i][j][k], dp[i-1][j][k-t[i]])。

题目中完全没有给出任何数据范围,因此空间上最好优化一下,通过滚动数组可以略去第一维。

/* **********************************************
Author      : Nero
Created Time: 2013-8-27 22:33:58
Problem id  : UVA 473
Problem Name: Raucous Rockers
*********************************************** */#include <stdio.h>
#include <string.h>
#include <algorithm>
using namespace std;
#define REP(i,a,b) for(int i=(a); i<(int)(b); i++)
#define clr(a,b) memset(a,b,sizeof(a))const int INF = 0x3f3f3f3f;
int n,t,m;
int dp[510][510];int main() {int cas;scanf("%d", &cas);while(cas--) {scanf("%d%d%d", &n, &t, &m);clr(dp,0);int d;REP(i,1,n+1) {scanf("%d", &d);getchar();for(int j = m; j > 0; j --) {for(int k = t; k > 0; k --) {if(d <= k) {dp[j][k] = max(dp[j][k], dp[j][k-d] + 1);dp[j][k] = max(dp[j][k], dp[j-1][t] + 1);}}}}printf("%d\n", dp[m][t]);if(cas) printf("\n");}return 0;
}

UVA 473 Raucous Rockers相关推荐

  1. UVA 473——Raucous Rockers

    题意:给定n个数,放到m个容器里,每个容器的容量是t(n个数的累加和不超过t),在不打乱放的顺序的情况下问最多能放多少个数? 思路:多维dp,f[i][j[k]表示前i个数放到第j个容器放k个的最大数 ...

  2. 【USACO题库】3.4.4 Raucous Rockers“破锣摇滚”乐队 题解

    [USACO题库]3.4.4 Raucous Rockers"破锣摇滚"乐队  题解 你刚刚继承了流行的"破锣摇滚"乐队录制的尚未发表的N(1 <= N ...

  3. “破锣摇滚”乐队 Raucous Rockers——动态规划

    "破锣摇滚"乐队 Raucous Rockers 题目来源 洛谷P2736 题目描述 你刚刚继承了流行的"破锣摇滚"乐队录制的尚未发表的N(1 <= N ...

  4. usaco Raucous Rockers(dp)

    dp[i][j]表示到了第i张CD且第i张CD用了j分钟可以装的最多歌曲. /* ID:jinbo wu LANG:C++ TASK: rockers */ #include<bits/stdc ...

  5. USACO 3.4 Raucous Rockers (rockers)

    /* Main idea: 一道动态规划题,但观察数据规模,穷举就行了. 穷举每首歌是否选取所有的组合可能(2^20种),算出每种情况所有光盘上一共能存的歌曲数目,保留最大值即可. 对于穷举每首歌是否 ...

  6. 动态规划算法的优化技巧

    动态规划是信息学竞赛中一种常用的程序设计方法,本文着重讨论了运用动态规划思想解题时时间效率的优化.全文分为四个部分,首先讨论了动态规划时间效率优化的可行性和必要性,接着给出了动态规划时间复杂度的决定因 ...

  7. usaco题思考记录

    1. 修理牛棚 Barn Repair 思路:反向,枚举所有间隔,从大到小排序,依次+板子不填它,直到板子数够了为止,拿总长去减::: 结论:逆向思维. 2.丢失的牛 思路:BFS::: 结论:有后效 ...

  8. 动态规划常见类型总结

    本文针对动态规划的常见类型进行总结.虽说总结的是动态规划,但顺便把递推也放了进来.严格来说,递推不属于动态规划问题,因为动态规划不仅有递推过程,还要有决策(即取最优),但广义的动态规划是可以包含递推的 ...

  9. 【USACO题库】 动态规划 汇总(普及-/普及)

    数据结构提高是够用了=-=虽然树状数组没学 但是其他类问题只能打到普及 普及啊啊啊!!! 而且这边省选组都是什么仙人掌啊,什么系什么点对啊...感觉数据结构并没有什么用 (实际上很有用但我不会用就是了 ...

  10. [搜索]UVa 129 困难的串

    题意:将一个包含两个相邻的重复子串的子串,称为"容易的串",其他为"困难的串". 输入正整数n和l,输出由前l个字符组成的,字典序第n小的困难的串. 输入样例: ...

最新文章

  1. linux 在终端修改文件,linux命令行学习(42):修改.bashrc文件
  2. 学计算机必懂的53个单词缩写
  3. python 封装_python接口自动化学习笔记(封装方法用于读取excel)
  4. 秒杀架构中高性能可扩展高可用的一点思考
  5. 做俯卧撑的10个技巧
  6. tkinter窗口居中方法
  7. parted如何将磁盘所有空间格式化_linux下大于2T的硬盘格式化问题
  8. c语言 生成一维条形码,C# BarcodeLib。dll 生成一维码的问题
  9. Gym100187I
  10. w7系统计算机e盘无法打开,Win7电脑磁盘打不开怎么办
  11. linux ssh禁止用户访问任何目录,怎么限制远程ssh用户访问特定的文件
  12. Bailian2815 城堡问题【DFS】
  13. 弱网环境搭建方案选型
  14. 使用angrutils生成控制流图出错的解决过程
  15. 计算机bios更改usb端口,联想电脑bios怎么设置usb接口
  16. ZZULIOJ1013
  17. python卡方拟合性检验_卡方检验
  18. windows虚机使用IIS服务搭建ftp
  19. 【机器学习】李宏毅-判断年收入
  20. 三维激光扫描系统基本原理及分类

热门文章

  1. 『中文、英文词频统计分析软件』免费工具分享
  2. mysql省市区数据导入_最新行政区划省市区镇街道 导入数据库 MYSQL (2020年8月 )
  3. 那些想上天的亿万富翁,开启了新的“太空竞赛”
  4. DM6437 GPIO模拟I2C
  5. ps高低频磨皮详细教学
  6. 一键磨皮插件:DR5白金版(支持ps 2022)中文版
  7. Android图标下载网站
  8. 小米9pro计算机打不开,小米9 Pro刷机教程,线刷升级更新官方系统包
  9. 皮肤暗的女孩如何穿衣服
  10. 解决shardingsphere 4.1.1 SQLFeatureNotSupportedException: isValid sharding-jdbc