HDU - 3496 Watch The Movie(01背包)
来源:互联网 发布:中科院数据共享平台 编辑:程序博客网 时间:2024/06/11 17:16
题目大意:有N个碟片,你只能选择M个进行播放,最多能观看L分钟。给出每个碟片的播放时间和看完后能收获的快乐值,问能否看完这M个碟片,如果能全部看完的话,输出最大快乐值
解题思路:用dp[i][j]表示i分钟看完j个碟片的最大快乐值,然后背包即可
#include <cstdio>#include <cstring>#include <algorithm>using namespace std;const int N = 110;const int L = 1010;int n, m, l;int Time[N], rate[N];int dp[L][N];void init() { scanf("%d%d%d", &n, &m, &l); for (int i = 0; i < n; i++) scanf("%d%d", &Time[i], &rate[i]);}void solve() { memset(dp, -1, sizeof(dp)); for (int i = 0; i <= l; i++) dp[i][0] = 0; for (int i = 0; i < n; i++) for (int j = l; j >= Time[i]; j--) for (int k = m - 1; k >= 0; k--) if (dp[j - Time[i]][k] != -1) dp[j][k + 1] = max(dp[j][k + 1], dp[j - Time[i]][k] + rate[i]); int ans = 0; for (int i = 0; i <= l; i++) ans = max(dp[i][m], ans); printf("%d\n", ans);}int main() { int test; scanf("%d", &test); while (test--) { init(); solve(); } return 0;}
0 0
- HDU - 3496 Watch The Movie(01背包)
- HDU 3496 Watch The Movie (二维背包+01背包)
- hdu 3496 Watch The Movie(二维背包)
- HDU 3496 Watch The Movie (二维背包)
- HDU 3496 Watch The Movie 二维背包
- HDU 3496 Watch The Movie (背包)
- HDU 3496 Watch The Movie 二维背包
- HDU 3496 Watch The Movie(二维01背包)
- hdu 3496 Watch The Movie 二维01背包
- hdu 3496 Watch The Movie(二维01背包)
- hdu 3496 Watch The Movie(二维01背包)
- hdu 3496 Watch The Movie(01背包)
- HDU 3496 Watch The Movie(二维01背包)
- hdu 3496 Watch The Movie 二维01背包
- hdu 3496 Watch The Movie(二维01背包)
- hdu 3496 Watch The Movie(二维01背包)
- HDU-3496-Watch The Movie(二维01背包问题)
- hdu 3496 Watch The Movie 二维01背包
- Android 事件的传递机制
- 【Android】loadData与loadDataWithBaseURL的区别
- [iOS]XMPP didReceivePresenceSubscriptionRequest函数不执行解决办法
- 最长回文子串解法详解
- Scala教程(十)函数与闭包详解
- HDU - 3496 Watch The Movie(01背包)
- HTML5中的表单+Ajax+localStorage+Cookie
- java实现链表的反转
- Java中Collection和Collections的区别
- HDU 1238 Substrings(求公共正反向连续子串)
- 算法代码:查找数组中第i小的元素
- 关于Java中多个数据excel表格的导出
- Linux线程通信条件变量理解
- VS2010/MFC编程之树型控件的创建及CTreeCtrl类的成员函数和实例