90pts P1782 WA on 4 求好心人调
查看原帖
90pts P1782 WA on 4 求好心人调
659460
SunsetVoice楼主2023/1/8 17:14
#include<bits/stdc++.h>
using namespace std;
long long n,i,j,a[6],b[6],c[6],nw[10000000] = {0},nc[10000000] = {0},f[10001] = {0},am,bw,h = 1;
int main(){
	long long sh,sf,eh,ef;
	long long m,k;
	cin>>n>>m>>bw;
	for(i = 1;i<=n;i++){//多重背包的二进制优化
		int c,w,num;
		cin>>w>>c>>num;
		for(j = 1;j<=num;j<<=1){
			nw[++h] = w*j;
			nc[h] = c*j;
			num-=j;
		}
		if(num!=0){
			nw[++h] = w*num;
			nc[h] = c*num;
		}
	}
	for(i = 1;i<=h;i++){//正常
		for(j = bw;j>=nw[i];j--){
			f[j] = max(f[j],f[j-nw[i]]+nc[i]);
		}
	}
	for(i = 1;i<=m;i++){//奇货
		cin>>a[i]>>b[i]>>c[i];
		for(j = 0;j<=bw;j++){
			for(k = 0;k<=j;k++){
				f[j] = max(f[j],f[j-k]+a[i]*k*k+b[i]*k+c[i]);
			}
		}
	}
	cout<<f[bw]<<endl; 
//	system ("pause");
	return 0;
}


2023/1/8 17:14
加载中...