100pts,but......
查看原帖
100pts,but......
1398620
Yanami___Anna楼主2025/1/24 19:10

wa

Subtask #1

rt

#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N=1e4+1;
int n,m,c,v,w,d;
int q[N],f[N],dp[N];
inline int read() {
	int x=0,f=1;
	char ch=getchar();
	while (ch<'0' || ch>'9') {
		if (ch=='-')f=-1;
		ch=getchar();
	}
	while ('0'<=ch && ch<='9') {
		x=(x<<3)+(x<<1)+(ch^48);
		ch=getchar();
	}
	return x*f;
}
signed main() {
	n=read(),m=read(),c=read();
	for(int i=0; i<n; i++) {
		v=read(),w=read(),d=read();
		for(int j=0; j<v; j++) {
			for( int h=0,t=0,k=0; k*v+j<=c; k++) {
				int x=dp[k*v+j]-k*w;
				while(h!=t && x>f[t-1])t--;
				q[t]=k;
				f[t++]=x;
				if(q[h]+d<k)h++;
				dp[k*v+j]=f[h]+k*w;
			}
		}
	}
	for(int i=0;i<m;i++) {
		for(int v=read(),w=read(),d=read(),j=c; j>=0; j--) {
			for(int k=0; k<=j; k++) {
				if (dp[j-k]+(v*k+w)*k+d>dp[j])dp[j]=dp[j-k]+(v*k+w)*k+d;
			}
		}
	}
	printf("%d",dp[c]);
	return 0;
}
2025/1/24 19:10
加载中...