求助大佬,样例都过不去,找半天不知道哪错了
  • 板块P1776 宝物筛选
  • 楼主wuname
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/5/26 09:22
  • 上次更新2024/5/26 10:52:26
查看原帖
求助大佬,样例都过不去,找半天不知道哪错了
1262870
wuname楼主2024/5/26 09:22
#include<bits/stdc++.h>
using namespace std;

const int N=105;
int n,W,v[N],w[N],m[N],dp[N][40005];

int main(){
	cin>>n>>W;
	for(int i=1;i<=n;i++)
		cin>>v[i]>>w[i]>>m[i];
	
	for(int i=1;i<=n;i++){
		int cnt=0,vv[20],ww[20],rm=m[i];
		memset(vv,0,sizeof vv);
		memset(ww,0,sizeof ww);
		for(int p=1;p<=rm;p*=2){
			vv[++cnt]=p*v[i];
			ww[cnt]=p*w[i];
			rm-=p;
		}
		if(rm>0){
			vv[++cnt]=rm*v[i];
			ww[cnt]=rm*w[i];
		}

		for(int j=1;j<=W;j++){
			dp[i][j]=dp[i-1][j];
			for(int k=1;k<=cnt;k++){
				if(j>=ww[k]){
					dp[i][j]=max(dp[i][j],dp[i-1][j-ww[k]]+vv[k]);
				}
			}
		}
	}
	cout<<dp[n][W];
	
	return 0;
}
2024/5/26 09:22
加载中...