OpenJudge-Noi 1775:采药(0-1背包问题)
2017-02-21 10:51
211 查看
总时间限制: 1000ms 内存限制: 65536kB
描述辰辰是个很有潜能、天资聪颖的孩子,他的梦想是称为世界上最伟大的医师。为此,他想拜附近最有威望的医师为师。医师为了判断他的资质,给他出了一个难题。医师把他带到个到处都是草药的山洞里对他说:“孩子,这个山洞里有一些不同的草药,采每一株都需要一些时间,每一株也有它自身的价值。我会给你一段时间,在这段时间里,你可以采到一些草药。如果你是一个聪明的孩子,你应该可以让采到的草药的总价值最大。”
如果你是辰辰,你能完成这个任务吗?
输入输入的第一行有两个整数T(1 <= T <= 1000)和M(1 <= M <= 100),T代表总共能够用来采药的时间,M代表山洞里的草药的数目。接下来的M行每行包括两个在1到100之间(包括1和100)的的整数,分别表示采摘某株草药的时间和这株草药的价值。
输出输出只包括一行,这一行只包含一个整数,表示在规定的时间内,可以采到的草药的最大总价值。
样例输入
样例输出
3
/* 用dp[t][m]表示在t时间内取前m件物品的最大价值
第i种物品 只存在取或者不取2种情况
得状态转移方程:
1. if(i >= t[j]) dp[i][j] = max(dp[i][j-1],dp[i-t[j]][j-1]+val[j]) 第i个物品能够放置的情况
2. if(i < t[j]) dp[i][j] = dp[i][j-1]; 第i个物品无法放置的情况
描述辰辰是个很有潜能、天资聪颖的孩子,他的梦想是称为世界上最伟大的医师。为此,他想拜附近最有威望的医师为师。医师为了判断他的资质,给他出了一个难题。医师把他带到个到处都是草药的山洞里对他说:“孩子,这个山洞里有一些不同的草药,采每一株都需要一些时间,每一株也有它自身的价值。我会给你一段时间,在这段时间里,你可以采到一些草药。如果你是一个聪明的孩子,你应该可以让采到的草药的总价值最大。”
如果你是辰辰,你能完成这个任务吗?
输入输入的第一行有两个整数T(1 <= T <= 1000)和M(1 <= M <= 100),T代表总共能够用来采药的时间,M代表山洞里的草药的数目。接下来的M行每行包括两个在1到100之间(包括1和100)的的整数,分别表示采摘某株草药的时间和这株草药的价值。
输出输出只包括一行,这一行只包含一个整数,表示在规定的时间内,可以采到的草药的最大总价值。
样例输入
70 3 71 100 69 1 1 2
样例输出
3
/* 用dp[t][m]表示在t时间内取前m件物品的最大价值
第i种物品 只存在取或者不取2种情况
得状态转移方程:
1. if(i >= t[j]) dp[i][j] = max(dp[i][j-1],dp[i-t[j]][j-1]+val[j]) 第i个物品能够放置的情况
2. if(i < t[j]) dp[i][j] = dp[i][j-1]; 第i个物品无法放置的情况
状态数 m*n 时间复杂度 O(m*n)
*/ #include "iostream" #include "cstring" #include "algorithm" using namespace std; int main() { int m, n; int dp[1002][102]; int t[101]; int val[101]; cin >> m >> n; for (int i = 1; i <= n; i++) cin >> t[i] >>val[i]; memset(dp, 0, sizeof(dp)); for (int i = 1; i <= m; i++) { for (int j = 1; j <= n; j++) { if (i >= t[j]) { dp[i][j] = max(dp[i][j-1], dp[i-t[j]][j-1] + val[j]); } else { dp[i][j] = dp[i][j-1]; } } } cout << dp[m] << endl; return 0; }
相关文章推荐
- 【DP背包问题1】 noi openjudge 2.6 采药
- 采药问题 01背包
- 采药问题 01背包
- 洛谷 1616——疯狂的采药(动态规划的背包问题)
- 百练noi 1775:采药
- NOI 1775:采药(C++) 动态规划
- COJ 1003采药:背包问题(1到m)
- 【Openjudge, NOI, 枚举】1813熄灯问题
- openjudge-noi-2.6-1775:采药
- openjudge-noi-2.5-7084:迷宫问题
- P1616 疯狂的采药,完全背包问题
- 采药【(0-1)背包问题】
- [OpenJudge-NOI]余数相同问题 暴力
- 简单的01背包问题(采药)
- noi-openjudge[4.7搜索]怀表问题
- 采药 纪中2540 背包问题
- 采药问题 01背包
- sicily1146-采药(背包问题)
- Openjudge-NOI题库-字符串移位包含问题
- 01背包采药问题 模版