P1064求助
  • 板块灌水区
  • 楼主somek_
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/4/3 20:44
  • 上次更新2024/4/4 00:20:38
查看原帖
P1064求助
1037054
somek_楼主2024/4/3 20:44
#include<bits/stdc++.h>
using namespace std;
int n,m,v[32000],p[32020],vv[32020][3],pp[32020][3],f[32020],cnt[32020];
int main(){
	cin>>n>>m;
	for(int i=1;i<=m;i++)
	{
		int a,b,c;
		cin>>a>>b>>c;
		if(c==0)
		{
			v[i]=a;
			p[i]=a*b;
		}
		else
		{
			++cnt[c];
			vv[c][cnt[c]]=a;
			pp[c][cnt[c]]=a*b; 
		}
	}
	for(int i=1;i<=m;i++)
		for(int j=n;v[i]&&j>=v[i];j--)
		{
			f[j]=max(f[j],f[j-v[i]]+p[i]);
			if(j-v[i]-vv[i][1])
			{
				f[j]=max(f[j],f[j-v[i]-vv[i][1]]+p[i]+pp[i][1]);
			}
			if(j-v[i]-vv[i][2])
			{
				f[j]=max(f[j],f[j-v[i]-vv[i][2]]+p[i]+pp[i][2]);
			}
			if(j-v[i]-vv[i][1]-vv[i][2])
			{
				f[j]=max(f[j],f[j-v[i]-vv[i][1]-vv[i][2]]+p[i]+pp[i][1]+pp[i][2]);
			}
		}
	cout<<f[n];
}
2024/4/3 20:44
加载中...