poj 2063 Investment

/* Name: poj 2063 Investment Author: Unimen Date: 07/05/11 15:05 Description: 完全背包 */ /* 解题报告:完全背包 只需注意一点:注意到The value of a bond is always a multiple of $1 000,可以将value/1000,这样可以将循环次数降下来, 不然会超时 */ #include <iostream> #include <cstring> #include <algorithm> using namespace std; int f[50000]; int main() { int nCase; int i, j, p; int V, year, bonds; int v[11], w[11]; while(cin>>nCase) { //输入 for(p=0; p<nCase; ++p) { cin>>V>>year>>bonds; for(j=1; j<=bonds; ++j) { cin>>v[j]>>w[j]; v[j] /= 1000; } //处理背包 while(year--) { memset(f, 0, sizeof(f)); int temp = V / 1000; for(i=1; i<=bonds; ++i) { for(j=v[i]; j<=temp; ++j) { f[j] = max(f[j], f[j-v[i]]+w[i]); } } V += f[temp]; } cout<<V<<endl; } } return 0; }

你可能感兴趣的:(Date)