symons

___________每一天都是幸福的!!

  博客园  ::  :: 新随笔  ::  :: 订阅 订阅  :: 管理
#include <stdio.h>
#include <math.h>
#define  mmin(x,y) (x)<(y)?(x):(y)
int main(){
    double dp[10000+10];
    int    c[10000+10];
    double w[10000+10];
    int n,m,i,j;
    int v;
    double aim,res;
    while(~scanf("%d%d",&n,&m)){
        if(n==0&&m==0) break;
        for(i=0;i<=n;++i)    dp[i]=1.0;
        aim=1;
        for(i=1;i<=m;++i){
            scanf("%d%lf",&c[i],&w[i]);
            w[i]=1-w[i];
            aim*=w[i];
        }
        for(i=1;i<=m;++i){
            for(v=n;v>=c[i];--v){
                dp[v]=mmin(dp[v],dp[v-c[i]]*w[i]);
            }
        }
        res=1;
        for(i=n;i>=0;--i){
            if(dp[i]>=aim){
                if(dp[i]<res)
                    res=dp[i];
                }
        }
        printf("%.1lf%%\n",(1-res)*100);
    }
    return 0;
}

 

posted on 2013-11-24 15:13  symons  阅读(150)  评论(0)    收藏  举报