1 #include <iostream> 2 #include <cstdio> 3 #include <cmath> 4 #include <cstring> 5 #include <algorithm> 6 #include <queue> 7 #include <stack> 8 #include <vector> 9 using namespace std; 10 int dp[100][10010]; 11 int main(int argc, char *argv[]) 12 { 13 int t,time[110],v[110],n,m,l; 14 scanf("%d",&t); 15 while(t--) 16 { 17 scanf("%d%d%d",&n,&m,&l); 18 for(int i=0;i<n;i++) 19 { 20 scanf("%d%d",&time[i],&v[i]); 21 } 22 for(int i=0;i<=m;i++) 23 { 24 for(int j=0;j<=l;j++) 25 { 26 if(i==0) 27 dp[i][j]=0; 28 else 29 dp[i][j]=-0x3f3f3f3f; 30 } 31 } 32 for(int i=0;i<n;i++) 33 { 34 for(int j=l;j>=time[i];j--) 35 { 36 for(int k=1;k<=m;k++) 37 dp[k][j]=max(dp[k][j],dp[k-1][j-time[i]]+v[i]); 38 } 39 } 40 if(dp[m][l]>0) 41 printf("%d",dp[m][l]); 42 else 43 printf("0"); 44 printf("\n"); 45 } 46 return 0; 47 }
HDOJ 3496(背包)
猜你喜欢
转载自www.cnblogs.com/huluxin/p/9657546.html
今日推荐
周排行