Topic Link: Click to open the link
Bare 0-1 backpack. It's just the equivalent of having multiple backpacks, because these backpacks are independent, and the sum is OK.
#include <algorithm> #include <iostream> #include <cstring> #include <cstdlib> #include <string># Include <cctype> #include <vector> #include <cstdio> #include <cmath> #include <queue># Include <stack> #include <map> #include <set> #define MAXN 1005#define _ll __int64#define ll Long long# Define INF 0x3f3f3f3f#define Mod 1<<40+10#define pp pair<int,int> #define ull unsigned long longusing namespac E std;int n,v[maxn],w[maxn],m,g;int cal (int v) {int Dp[35];memset (dp,0,sizeof (DP)); for (int. i=1;i<=n;i++) for (int j=v ; j>=v[i];j--) Dp[j]=max (Dp[j],dp[j-v[i]]+w[i]); return dp[v];} int main () {int t;scanf ("%d", &t), while (t--) {scanf ("%d", &n), for (int i=1;i<=n;i++) scanf ("%d%d", &w[i], &v[i]); int s=0;scanf ("%d", &m), for (int i=0;i<m;i++) {scanf ("%d", &g); s+=cal (G);} printf ("%d\n", s);} return 0;}
Uva 10130-supersale (0-1 backpack)