ZOJ 2224 Investment

来源:互联网 发布:春运迁徙大数据图 编辑:程序博客网 时间:2024/05/22 11:55

完全背包的做法,因为总量都是可以整除1000的 所以直接把重量和开始金钱整除1000,进行完全背包DP,用临时变量保存一不除1000的总值.

#include <iostream>#include <cstdio>#include <memory.h>using namespace std;const int maxn = 11;int cap, years, n;int w[maxn], v[maxn], dp[60000];int main(){int T;scanf("%d", &T);while(T--){scanf("%d %d %d", &cap, &years, &n);int ans = cap;for(int i = 0; i < n; ++i){scanf("%d %d", &w[i], &v[i]);w[i] /= 1000;}for(int i = 0; i < years; ++i){cap /= 1000;memset(dp, 0, sizeof(dp));for(int j = 0; j < n; ++j){for(int k = w[j]; k <= cap; ++k){dp[k] = max(dp[k], dp[k - w[j]] + v[j]);}}ans += dp[cap];cap = ans;}printf("%d\n", ans);}return 0;}


原创粉丝点击