全re求助

P8548 小挖的买花

同 ```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


|