题目:点击打开链接
#include<bits/stdc++.h>
using namespace std;
const int maxn=1e5+10;
const int inf=0x3f3f3f3f;
int a[maxn],b[maxn],dp[maxn],tmp[maxn];
int main(){
int t,n,m;
cin>>t;
while(t--){
memset(dp,0,sizeof(dp));
cin>>n;
int v=0,p=0;
for(int i=0;i<n;i++){
cin>>a[i]>>b[i];
v+=b[i];
}
cin>>m;
for(int i=0;i<m;i++){
cin>>a[n+i]>>b[n+i];
}
cin>>p;
v+=p;
for(int i=0;i<n+m;i++){
for(int j=v;j>=b[i];j--){
dp[j]=max(dp[j-b[i]]+a[i],dp[j]);
}
}
cout<<dp[v]<<endl;;
}
return 0;
}