求调
查看原帖
求调
1019983
Czero_2023楼主2024/10/10 21:29

记录,,,

#include <iostream>
using namespace std;

int n,m;
int dp[32001],w[61],v[61],item[61][3];
bool flag[61];

int main()
{
	cin>>n>>m;
	for(int i=1;i<=m;i++)
	{
		int a,b,c;cin>>a>>b>>c;
		b*=a;v[i]=a;w[i]=b;
		if(c==0)flag[i]=1;
		else{
			item[c][0]++;
			item[c][item[c][0]]=i;
		}
	}
	for(int i=1;i<=n;i++)
	{
		if(flag[i]==0)continue;
		for(int j=n;j>=0;j--)
		{
			int a=item[i][1],b=item[i][2],c=item[i][0];
			if(j>=v[i])dp[j]=max(dp[j],dp[j-v[i]]+w[i]);
			if(c>=1&&j>=v[i]+v[a])dp[j]=max(dp[j],dp[j-v[i]-v[a]]+w[i]+w[a]);
			if(c>=2&&j>=v[i]+v[b])dp[j]=max(dp[j],dp[j-v[i]-v[b]]+w[i]+w[b]);
			if(c>=2&&j>=v[i]+v[a]+v[b])dp[j]=max(dp[j],dp[j-v[i]-v[a]-v[b]]+w[i]+w[a]+w[b]);
		}
	}
	cout<<dp[n];
	return 0;
}

怎么还RE了,,

%%%

2024/10/10 21:29
加载中...