#include<stdio.h>
#include<algorithm>
using namespace std;
int n,m,V;
int v[10000010],val[10000010],num[10000010];
int a[10000010],b[10000010],c[10000010];
int volume[100000010],value[100000010],sum = 0,cnt = 0;
int res[1000010],res2[1000010];
int main()
{
scanf("%d%d%d\n",&n,&m,&V);
for(int i = 1;i <= n;++i)
{
scanf("%d %d %d\n",&v[i],&val[i],&num[i]);
}
for(int i = i;i <= m;++i)
{
scanf("%d %d %d\n",&a[i],&b[i],&c[i]);
}
for(int i = 1;i <= n;++i)
{
int temp = 1;
while(temp < num[i])
{
volume[++cnt] = temp*v[i];
value[cnt] = temp*val[i];
sum += temp*val[i];
num[i] -= temp;
temp <<= 1;
}
if(num[i] != 0)
{
volume[++cnt] = num[i]*v[i];
value[cnt] = num[i]*val[i];
sum += num[i]*val[i];
}
}
res[0] = 1;
for(int i = 1;i <= cnt;++i)
{
for(int j = sum;j >= value[i];--j)
{
res[j] = max(res[j],res[j-value[i]] + volume[i]);
}
}
for(int i = 1;i <= n;++i)
{
for(int j = V;j >= 0;--j)
{
for(int k = 0;k <= j;++k)
{
res2[j] = max(res2[j],res2[j-k]+(k*(a[i]*k+b[i])+c[i]));
}
}
}
printf("%d",res[n]+res2[m]);
return 0;
}
有木有dalao来帮忙,6个Re,4个T,求助