99分RE求调
查看原帖
99分RE求调
393852
C83_AD楼主2024/9/5 18:08

分数详情

下载数据本地测试没什么问题,但是RE。

提交的代码如下:

/*
状态:(group,weight,group_member)
对于每一种状态,可取或不取
若取,则状态可能更新为(group-1,weight-weight【group_member[i]】)+value【group_member[i]】 
*/ 
#include<cstdio>
#include<vector>
using namespace std;
struct kind_t{vector<int> member;}group[103];//组 
int main(){
	int n,m,x,n_gr=1;
	scanf("%d%d",&m,&n);
	vector<int> dp(m+1,0);
	int wei[m+1],val[m+1];
	wei[0]=val[0]=0;
	for(int i=1;i<=n;++i){//输入&存数 
		scanf("%d%d%d",&wei[i],&val[i],&x);
		group[x].member.push_back(i);
		if(n_gr<x) n_gr=x;
	}
	for(int gr=1;gr<=n_gr;++gr){//枚举组数 
		for(int i=m;i>=1;--i){//枚举重量 
			for(int mem=0;mem<group[gr].member.size();++mem){//枚举成员 
				if(wei[group[gr].member[mem]]>i) continue;
				if(dp[i] < dp[i - wei[ group[gr].member[mem]] ] + val[ group[gr].member[mem] ])
				   dp[i] = dp[i - wei[ group[gr].member[mem]] ] + val[ group[gr].member[mem] ];
			}
		}
	}
	printf("%d",dp[m]); 
	return 0;
}
2024/9/5 18:08
加载中...