symons

___________每一天都是幸福的!!

  博客园  ::  :: 新随笔  ::  :: 订阅 订阅  :: 管理
#include <stdio.h>
#include <math.h>
#include <string.h>
int main(){
    int dp[200];
    int count[200];
    int n,m,k,s;
    int c[200],w[200];
    int i,j,res;
    while(~scanf("%d%d%d%d",&n,&m,&k,&s)){
        for(i=1;i<=k;++i)
            scanf("%d%d",&w[i],&c[i]);
        memset(dp,0,sizeof(dp));
        memset(count,0,sizeof(count));
        for(i=1;i<=k;++i){
            for(j=c[i];j<=m;++j){
                if(dp[j]>=dp[j-c[i]]+w[i]){
                    dp[j]=dp[j];
                    count[j]=count[j];
                }else{
                    dp[j]=dp[j-c[i]]+w[i];
                    count[j]=count[j-c[i]]+1;
                }
            }
        }

        res=1000000;
        for(i=m;i>=0;--i){
            if(dp[i]>=n){
                if(count[i]<=s){
                    if(i<res)
                        res=i;
                }
            }
        }
        if(m-res<0)
            printf("-1\n");
        else printf("%d\n",m-res);
    }
    return 0;
}
                

 

posted on 2013-11-24 17:04  symons  阅读(179)  评论(0)    收藏  举报