http://acm.hdu.edu.cn/showproblem.php?pid=2602
01背包
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 #include <map> 2 #include <cstdio> 3 #include <stack> 4 #include <cmath> 5 #include <queue> 6 #include <string> 7 #include <queue> 8 #include <cstring> 9 #include <iostream> 10 #include <algorithm> 11 12 #define lid id<<1 13 #define rid id<<1|1 14 #define closein cin.tie(0) 15 #define scac(a) scanf("%c",&a) 16 #define scad(a) scanf("%d",&a) 17 #define print(a) printf("%d ",a) 18 #define scald(a) scanf("%lld",&a) 19 #define debug printf("hello world") 20 #define form(i,n,m) for(int i=n;i<m;i++) 21 #define mfor(i,n,m) for(int i=n;i>m;i--) 22 #define nfor(i,n,m) for(int i=n;i>=m;i--) 23 #define forn(i,n,m) for(int i=n;i<=m;i++) 24 #define scadd(a,b) scanf("%d%d",&a,&b) 25 #define memset0(a) memset(a,0,sizeof(a)) 26 #define scaldd(a,b) scanf("%lld%lld",&a,&b) 27 #define scaddd(a,b,c) scanf("%d%d%d",&a,&b,&c) 28 #define scadddd(a,b,c,d) scanf("%d%d%d%d",&a,&b,&c,&d) 29 30 #define INF 0x3f3f3f3f 31 #define maxn 50000 32 #define mod 1000000007 33 typedef long long ll; 34 using namespace std; 35 //---------AC(^-^)AC---------\ 36 37 int a[1005],b[1005]; 38 int dp[1005]; 39 int main() 40 { 41 int t; 42 scad(t); 43 while(t--) 44 { 45 memset(dp,0,sizeof(dp)); 46 int n,m; 47 scadd(n,m); 48 for(int i=0;i<n;i++) scad(b[i]); 49 for(int i=0;i<n;i++) scad(a[i]); 50 int ans=0; 51 for(int i=0;i<n;i++) 52 { 53 for(int j=m;j>=0;j--) 54 { 55 if(j>=a[i]) dp[j]=max(dp[j],dp[j-a[i]]+b[i]); 56 ans=max(ans,dp[j]); 57 } 58 } 59 print(ans); 60 } 61 return 0; 62 }