hdu 2602 Bone Collector

来源:互联网 发布:情报通怎么样 知乎 编辑:程序博客网 时间:2024/05/29 17:38

题目链接: 点击打开链接

题目大意: 

思路: 01背包,dp

分析: 

常规01背包题,一维数组

代码:

#include <cstdio>#include <algorithm>#include <memory.h>using namespace std;const int maxn = 1000 + 10;const int maxv = 1000 + 10;int n, v;int dp[maxv], value[maxn], vol[maxn];void solve(){memset(dp, 0, sizeof(dp));for (int i = 1; i <= n; ++i)for (int j = v; j >= 0; --j)if (j >= vol[i])dp[j] = max(dp[j], dp[j-vol[i]] + value[i]);}int main(){int t;scanf("%d", &t);while (t--){scanf("%d %d", &n, &v);for (int i = 1; i <= n; ++i)scanf("%d", &value[i]);for (int i = 1; i <= n; ++i)scanf("%d", &vol[i]);solve();printf("%d\n", dp[v]);}return 0;}