蒟蒻有些疑惑
查看原帖
蒟蒻有些疑惑
1085779
duanhongwen楼主2024/11/7 01:13
#include<bits/stdc++.h>
using namespace std;
int dp[101][1001],n,m,f[1001];
struct group
{
	int w[101],v[101],num,maxx=INT_MIN;
}g[101];
int main()
{
	cin>>m>>n;
	int p=0;
	for(int i=1;i<=n;i++)
	{
		int a,b,c;
		cin>>a>>b>>c;
		p=max(p,c);
		g[c].maxx=max(g[c].maxx,a);
		g[c].num++;
		g[c].w[g[c].num]=a;
		g[c].v[g[c].num]=b;
	}
   	/*for(int i=1;i<=n;i++)
	{
		cout<<g[i].num<<endl;
		for(int j=1;j<=g[i].num;j++)
		{
			cout<<g[i].w[j]<<" "<<g[i].v[j]<<endl;
		}
	}*/
	/*for(int i=1;i<=p;i++)
	{
		for(int j=1;j<=m;j++)
		{
			dp[i][j]=dp[i-1][j];
			for(int k=1;k<=g[i].num;k++)
			{
				if(j-g[i].w[k]>=0)
				{
					dp[i][j]=max(dp[i][j],dp[i-1][j-g[i].w[k]]+g[i].v[k]);
				}
			}
		}
	}*/
	for(int i=1;i<=p;i++)
	{
		for(int j=m;j>=g[i].maxx;j--)//这里 
		{
			for(int k=1;k<=g[i].num;k++)
			{
				f[j]=max(f[j],f[j-g[i].w[k]]+g[i].v[k]);
			}
		}
	}
	cout<<f[m];
	//cout<<dp[p][m];
}
2024/11/7 01:13
加载中...