紧急求助
查看原帖
紧急求助
759120
luogu_MeiFengqi楼主2024/4/7 22:23
#include<bits/stdc++.h>
using namespace std;
#define int long long
struct node{
	int w,v;//w:重量 v:价值 
}a[1010];
int n,m;
int size[1010];
int g[1010][1010];//g[i][j]: 小组i中第j个的编号 
int dp[1010];
int num_g;//组数 
signed main()
{
	cin >> m >> n;
	for(int i=1;i<=n;i++)
	{
		int x;
		cin >> a[i].w >> a[i].v >> x;
		num_g=max(num_g,x);
		size[x]++;
		g[x][size[x]]=i;
	}
	for(int i=1;i<=num_g;i++)
	{
		for(int j=m;j>=0;j--)
		{
			for(int k=1;k<=size[i];k++)
			{
				if(j>a[g[i][k]].w)
				dp[j]=max(dp[j],dp[j-a[g[i][k]].w]+a[g[i][k]].v);
			}
		}
	}
	cout << dp[m];
	return 0;
}

与第一篇题解思路基本相同,wa了3,6两个点,在线求改

2024/4/7 22:23
加载中...