同
```cpp
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
const int N = 505;
int f[N][N];
int n, q;
int c[N], fr[N], b[N];
int main(){
cin >> n >> q;
int F = 0, C = 0;
for(int i = 1; i <= n; i ++){
cin >> c[i] >> fr[i] >> b[i];
F += fr[i];
C += c[i];
}
for(int i = 1; i <= n; i ++){
for(int j = C; j >= c[i]; j --){
for(int k = F; k >= fr[i]; k --){
f[j][k] = max(f[j][k], f[j - c[i]][k - fr[i]] + b[i]);
}
}
}
int cq, fq;
for(int i = 1; i <= q; i ++){
cin >> cq >> fq;
cout << f[cq][F] << endl;
}
return 0;
}
```
by 大实魂 @ 2022-09-24 12:22:55
同上
```cpp
#include<bits/stdc++.h>
using namespace std;
int n,q,fn;
int c[5200],f[5200],b[5200],vis[5200];
int v,s;
int dp[5020][5020];
int main()
{
cin >> n >> q;
for(int i=1;i<=n;i++) {
cin >> c[i] >> f[i] >> b[i];
s += f[i];
v += c[i];
}
for(int i=1;i<=n;i++) {
for(int j=v;j>=c[i];j--) {
for(int o=s;o>=f[i];o--)
dp[j][o]=max(dp[j][o],dp[j-c[i]][o-f[i]]+b[i]);
}
}
for(int i=1,l,e;i<=q;i++) {
cin >> l >> e;
cout << dp[l][e] << endl;
}
return 0;
}
```
by _pharos_C @ 2022-09-24 14:17:14
同
```cpp
#include<bits/stdc++.h>
using namespace std;
const int MAXN = 505, MAXC = 505, MAXF = 505*505;
int n, q, pack[MAXC][MAXF];
struct node{
int ci, fi, bi;
} fl[MAXN];
int main(){
scanf("%d%d", &n, &q);
int sumc=0, sumf=0;
for(int i=1; i<=n; i++){
scanf("%d%d%d", &fl[i].ci, &fl[i].fi, &fl[i].bi);
sumc += fl[i].ci, sumf += fl[i].fi;
}
memset(pack, -1, sizeof(pack));
pack[0][0] = 0;
for(int i=1; i<=n; i++)
for(int j=sumc; j>=fl[i].ci; j--)
for(int k=sumf; k>=fl[i].fi; k--){
if(pack[j-fl[i].ci][k-fl[i].fi]==-1) continue;
pack[j][k] = max(pack[j][k], pack[j-fl[i].ci][k-fl[i].fi]+fl[i].bi);
}
while(q--){
int cj, fj;
scanf("%d%d", &cj, &fj);
int ans = 0;
for(int i=0; i<=cj; i++)
for(int j=fj; j<=sumf; j++)
ans = max(ans, pack[i][j]);
printf("%d\n", ans);
}
return 0;
}
```
by David_Mercury @ 2022-09-24 15:44:10