uva 473 dp
2015-09-10 14:40
239 查看
UVA 473 - Raucous Rockers
给出n首歌, m张磁盘,每张可以存t分钟歌曲。和每首歌的时间。歌曲必须按顺序存放。以磁盘的存储情况为状态,
dp[i][j][k]表示前i首歌存在前j个磁盘并且第j个磁盘花了k分钟的最大存储歌曲数量。
第i-1首歌可能存在第j个磁盘或者第j-1个磁盘。得出转移dp[i][j][k]=max{dp[i−1][j][k−a[i]]+1dp[i−1][j−1][t]+1
dp[i][j][k] = max
\begin{cases}
dp[i-1][j][k-a[i]] + 1 \\
dp[i-1][j-1][t] + 1
\end{cases}
可压缩空间复杂度到(m*t)
[code]#include <bits/stdc++.h> using namespace std; int n, t, m; int a[1005]; int dp[1005][1005]; int main () { int T; scanf ("%d", &T); for (int cases=1; cases<=T; cases++) { cin >> n >> t >> m; for (int i=1; i<=n; i++) { if (i == 1) scanf ("%d", &a[i]); else scanf (", %d", &a[i]); } memset(dp, 0, sizeof(dp)); for (int i=1; i<=n; i++) { for (int j=m; j>0; j--) { for (int k=t; k>0; k--) { if (k>=a[i]) { dp[j][k] = max(dp[j][k], dp[j-1][t] + 1); dp[j][k] = max(dp[j][k], dp[j][k-a[i]] + 1); } } } } if (cases != 1) cout << endl; cout << dp[m][t] << endl; } return 0; }
相关文章推荐
- Meteor——以NodeJS为基础环境,MongoDB为数据环境的全栈开发平台!
- Redis 客户端Jedis使用(一)
- MongoDB—细说高级操作
- Oracle中提供的事件触发机制
- js实现限制上传文件大小
- GI PSU7 And DB PSU7 Install on 11.2.0.4.0 RAC
- iOS-响应者链条
- 在Unity3D中动态创建对象和创建Prefab原型对象的三种方式
- 如何在OpenStack Nova v2.1 API 中增加或变更一个API接口
- Bluetooth 分析Enable流程
- Jedis分片连接池(分布式)
- 设备像素比
- JQuery的第一个句源码
- JSON.parse()和JSON.stringify()
- 数据结构之二叉树
- MongoDB—细说增删查改
- jquery学习(1)
- ZOJ 3201 Tree of Tree
- Directsound和Waveout
- Android页面翻转动画(模仿CSDN账号登录的翻转效果)