hdu2159 FATE

 1 #include<stdio.h>
 2 #include<string.h>
 3 int d[101][101];
 4 int main()
 5 {
 6     int i,j,t,flag,v,w,n,m,k,s;
 7     while(~scanf("%d%d%d%d",&n,&m,&k,&s)){
 8         memset(d,0,sizeof(d));
 9         for(flag=i=0;i<k;++i){
10             scanf("%d%d",&v,&w);
11             for(j=w;j<=m;++j)
12                 for(t=1;t<=s;++t)
13                     d[j][t]>?=d[j-w][t-1]+v;
14         }
15         for(flag=i=0;i<=m;++i)
16             if(d[i][s]>=n){
17                 flag=1;
18                 break;
19             }
20         if(flag) printf("%d\n",m-i);
21         else puts("-1");
22     }
23     return 0;
24 }
原文地址:https://www.cnblogs.com/shihuajie/p/2652443.html