啊啊啊啊啊啊啊! 大佬,10分求助
查看原帖
啊啊啊啊啊啊啊! 大佬,10分求助
540066
zwb3_1415926楼主2023/4/17 16:32
 #include<bits/stdc++.h>
using namespace std;
int m,n,v[10000],p[10000],q[10000],f[10000],sn=0,qq[10000];
int vl[100][10000],pl[100][10000],nn[10000],vv[10000];
bool vis[10000];
int main()
{
	cin>>m>>n;
	for(int i=1;i<=n;i++)
	{
		int a,b,c;
		cin>>a>>b>>c;
		if (c==0)
		{
			sn++;
			vl[sn][nn[c]]=a;pl[sn][nn[c]]=b;
		}
		else
		{
			nn[c]++;
			vl[c][nn[c]]=a+vl[c][0];pl[c][nn[c]]=b+pl[c][0];
		}
	}
	for (int i=1;i<=sn;i++)
	{
		nn[i]++;
		vl[i][3]=vl[i][1]+vl[i][2]-vl[i][0];
		pl[i][3]=pl[i][1]+pl[i][2]-pl[i][0];
		if (vl[i][3]<0||pl[i][3]<0) 
		{
			nn[i]--;
		}
	}
	for (int i=1;i<=sn;i++)
	{
		for (int j=m;j>=vl[i][0];j--)
		{
			if (nn[i]==0)
			{
				if (f[j]<f[j-vl[i][0]]+pl[i][0])
				{
					f[j]=f[j-vl[i][0]]+pl[i][0];
					qq[j]=qq[j-vl[i][0]]+pl[i][0]*vl[i][0];
				}
			}
			else 
			{
				if (f[j]<f[j-vl[i][0]]+pl[i][0])
				{
					f[j]=f[j-vl[i][0]]+pl[i][0];
					qq[j]=qq[j-vl[i][0]]+pl[i][0]*vl[i][0];
				}
				if (f[j]<f[j-vl[i][1]]+pl[i][1]&&j-vl[i][1]>=0)
				{
					f[j]=f[j-vl[i][1]]+pl[i][1];
					qq[j]=qq[j-vl[i][1]]+pl[i][1]*vl[i][1];
				}
				if (f[j]<f[j-vl[i][2]]+pl[i][2]&&j-vl[i][2]>=0)
				{
					f[j]=f[j-vl[i][2]]+pl[i][2];
					qq[j]=qq[j-vl[i][2]]+pl[i][2]*vl[i][2];
				}
				if (f[j]<f[j-vl[i][3]]+pl[i][3]&&j-vl[i][3]>=0)
				{
					f[j]=f[j-vl[i][3]]+pl[i][3];
					qq[j]=qq[j-vl[i][3]]+pl[i][3]*vl[i][3];
				}
			}
		}
	}
	cout<<qq[m];
}
2023/4/17 16:32
加载中...