WA #2 #9 #11 求助
查看原帖
WA #2 #9 #11 求助
413801
rabbitdit楼主2021/9/5 15:16
#include<bits/stdc++.h>
#define int long long
using namespace std;
int n,m,c;
int dp[10005],dp1[7][10005];
void all(int v,int w) {
	for(int i=v; i<=c; i++) dp[i]=max(dp[i],dp[i-v]+w);
}
void one(int v,int w) {
	for(int i=c; i>=v; i--) dp[i]=max(dp[i],dp[i-v]+w);
}
void mult(int v,int w,int num) {
	for(int k=1; k<=num; k*=2) {
		num-=k;
		one(v*k,w*k);
	}
	if(num) one(v*num,w*num);
}
signed main() {
	scanf("%lld%lld%lld",&n,&m,&c);
	while(n--) {
		int v,w;
		int d;
		scanf("%lld%lld%lld",&v,&w,&d);
		if(v*d>=c) all(v,w);
		else mult(v,w,d);
	}
//	for(int i=1;i<=c;i++)cout<<dp[i]<<" ";
	for(int i=1; i<=c; i++) dp1[0][i]=dp[i];
	for(int i=1; i<=m; i++) {
		int ai,bi,ci;
		scanf("%lld%lld%lld",&ai,&bi,&ci);
		for(int j=1; j<=c; j++) { //j为分配给奇货的空间
			for(int k=c; k>=j; k--) dp1[i][k]=max(dp1[i][k],dp1[i-1][k-j]+ai*j*j+bi*j+ci);
			}
	}
	cout<<dp1[m][c];
	return 0;
}
2021/9/5 15:16
加载中...