```
int a[71][33001];
```
你不觉得要开
long long 吗
by tangrunxi @ 2020-02-09 11:33:10
@[zhangthreewind](/user/304374)
by tangrunxi @ 2020-02-09 11:33:16
@[tangrunxi](/user/231147)
可是他说输出小于200000
by Mamba_ever_out @ 2020-02-09 11:37:34
@[zhangthreewind](/user/304374) 输出的是这个
```
cout<<dp[n];
```
我说a数组开小了。
by tangrunxi @ 2020-02-09 11:39:35
@[tangrunxi](/user/231147)
我的a[i][j]表示的是第i组物品(每组就是一个主产品和各种附属产品在j个金钱的情况下能获得的最高价值)数量为60 金钱最多为32000,应该不会超的啊
by Mamba_ever_out @ 2020-02-09 11:43:45
上面01背包位置写反现在改正为
```gcc
for(int k=1;k<=gs[b[i]];k++){ //里面就相当于看成 01背包 ,在这其中已经算(默认已经算进主产品)
for(int j=n-v[b[i]];j>=1;j--){ // 购买了主产品,所以对金币计算会有所改动
if(j-v[wz[b[i]][k]]>=0)
dp[j] = max(dp[j],dp[j-v[wz[b[i]][k]]]+p[wz[b[i]][k]]*v[wz[b[i]][k]]);
}
}
```
by Mamba_ever_out @ 2020-02-09 13:31:23