WA #1#4#5#6#7#9
查看原帖
WA #1#4#5#6#7#9
1496771
hzywww楼主2025/7/23 16:13
#include<bits/stdc++.h>
#define int long long
using namespace std;

int n,m,C,cnt;
int V[10006],W[10006],D[10086],newV[100001],newW[100001];
int fz[1001][20005],a[10086],b[10086],c[10086];
int f[1000086];

void fp(int k)
{
	for(int i=0;i<=C;i++)
	{
		fz[k][i]=a[k]*i*i+b[k]*i+c[k];
	}
}

void cf(int k){
	int z=1;
	while(z<D[k])
	{
		cnt++;
		newV[cnt]=z*V[k];
		newW[cnt]=z*W[k];
		D[k]-=z;
		z*=2;
	}
	if(D[k]>0){
		cnt++;
		newV[cnt]=D[k]*V[k];
		newW[cnt]=D[k]*W[k];
	}
}
signed main()
{
    ios::sync_with_stdio(false);
	cin>>n>>m>>C;
	for(int i=1;i<=n;i++)
	{
		cin>>V[i]>>W[i]>>D[i];
		if(D[i]==1)
		{
			for(int j=C;j>=V[i];j--){
				f[j]=max(f[j],f[j-V[i]]+W[i]);
			}
		}
		if(D[i]>1){
			cf(i);
			for(int j=1;j<=cnt;j++)
			{
				for(int k=C;k>=newV[j];k--)
				{
					f[k]=max(f[k],f[k-newV[j]]+newW[j]);
				}
			}
			cnt=0;
		}
	}
	for(int i=1;i<=m;i++)
	{
		cin>>a[i]>>b[i]>>c[i];
		fp(i);
		for(int k=C;k>=0;k--)
			for(int j=C;j>=0;j--){
				if(k>=j){
					f[k]=max(f[k],f[k-j]+fz[i][j]);
				}
			}
	}
	cout<<f[C];
	return 0;
}
2025/7/23 16:13
加载中...