HDOJ 3496 Watch The Movie (二维背包)
来源:互联网 发布:淘宝 海外直供 编辑:程序博客网 时间:2024/05/13 23:47
题目链接:(—_—) zZ
题目大意:小明想要买n张碟子来看, 但商店只卖m张(m<n,要么买m张要么不买), 小明的奶奶规定他晚上只能看L分钟的电影, 先给出每张碟子放映的时间, 和这张碟子的价值, 要求求出是否可以买m张碟子在L时间内看完且价值最大。
思路:简单的二维费用背包问题, dp[j][k]表示时间为j内, 看k张碟子得到的最大价值。dp[j][k] = max(dp[j][k], dp[j-time[i]][k-1]+value[i])
code:
#include <stdio.h>#include <string.h>int main(){ int i = 0, j = 0, k = 0, t = 0, n = 0, m = 0, l = 0, time[102], value[102], dp[1002][102]; scanf("%d", &t); while(t--) { scanf("%d %d %d", &n, &m, &l); for(i = 0; i<n; i++) scanf("%d %d", &time[i], &value[i]); //memset(dp, 0, sizeof(dp)); for (i = 0 ; i <= l ; i ++ ) for (j = 0 ; j <= m ; j ++ ) { dp[i][j] = -1 ; if ( j == 0 ) dp[i][j] = 0 ; } for(i = 0; i<n; i++) { for(j = l; j>=time[i]; j--) { for(k = m; k>0; k--)//碟子数 if(dp[j-time[i]][k-1] != -1) dp[j][k] = dp[j][k]>dp[j-time[i]][k-1]+value[i]? dp[j][k]:dp[j-time[i]][k-1]+value[i]; } } if(dp[l][m] == -1) printf("0\n"); else printf("%d\n", dp[l][m]); } return 0;}
- HDOJ 3496 Watch The Movie (二维背包)
- HDOJ题目3496Watch The Movie(二维背包)
- (DP,二维背包)Watch The Movie--HDOJ
- hdoj 3496 Watch The Movie【二维背包】【DP】
- hdoj Watch The Movie 3496 (二维01背包)好题
- hdu 3496 Watch The Movie(二维背包)
- HDU 3496 Watch The Movie (二维背包)
- 3496 Watch The Movie 二维背包
- HDU 3496 Watch The Movie 二维背包
- HDU 3496 Watch The Movie 二维背包
- HDU 3496 Watch The Movie(二维01背包)
- hud 3496 Watch The Movie(二维费用背包)
- hdu 3496 Watch The Movie(二维01背包)
- hdu 3496 Watch The Movie (二维背包)
- hdu 3496 Watch The Movie(二维01背包)
- hdu 3496 Watch The Movie(二维01背包)
- hdu 3496 Watch The Movie (二维费用背包)
- HDU-3496-Watch The Movie(二维01背包问题)
- 指尖上的Android之实战篇(八)
- 日志文件分析shell脚本六次提速过程
- 计算机网络简介
- 多源在线与离线数据读取之五(Android移动端开发读取四川地理信息中心地名搜索服务)
- linux底层驱动模型之一:Kobject
- HDOJ 3496 Watch The Movie (二维背包)
- 使用windbg找内存泄露(memory leak)
- 最小生成树Prim算法和单源最短路径Dijkstra算法
- linux底层驱动模型之二:上层容器
- 如何安装redis 如何安装phpredis
- grep、sed、awk、perl等对正则表达式的支持的差别
- 0724
- linux底层驱动模型之三:kobject应用实例
- C++中关键字explicit