zoukankan      html  css  js  c++  java
  • hdu2955 Robberies 01背包

    题意:

    Roy 去抢N个银行,去抢第j个银行时能得到Mj的钱,被抓的概率为Pj。

    问在被抓的概率不大于P时能抢到的最多的钱是多少。

     1 #include <iostream>
     2 #include <cstdio>
     3 #include <map>
     4 #include <cstring>
     5 using namespace std;
     6 const int Ni = 110;
     7 int money[Ni];
     8 double dp[10100];
     9 double pro[Ni];
    10 int dcmp(double a,double b)
    11 {
    12     if(a-b>1e-7) return 1;
    13     if(b-a>1e-7) return -1;
    14     return 0;
    15 }
    16 int main()
    17 {
    18     int t,n;
    19     double p;
    20     cin>>t;
    21     while(t--)
    22     {
    23         scanf("%lf%d",&p,&n);
    24         int sum=0;
    25         for(int i=1;i<=n;i++)
    26         {
    27             scanf("%d%lf",money+i,pro+i);
    28             sum+=money[i];
    29         }
    30         memset(dp,0,sizeof(dp));
    31         dp[0]=1.0;
    32         for(int i=1;i<=n;i++)
    33         {
    34             for(int j=sum;j>=money[i];j--)
    35             {
    36                 dp[j]=max(dp[j],dp[j-money[i]]*(1-pro[i]));
    37             }
    38         }
    39         for(int i=sum;i>=0;i--)
    40         {
    41             if(dcmp(p,1-dp[i])!=-1)
    42             {
    43                 printf("%d\n",i);
    44                 break;
    45             }
    46         }
    47 
    48     }
    49     return 0;
    50 }
  • 相关阅读:
    ps太卡
    vba 数字变为excel对应列的字母
    爬去网页离线数据
    vba 得到数字
    Sql Server generate table structure document
    Git
    windows凭据管理器
    修改注册表
    Software List
    1009 说反话
  • 原文地址:https://www.cnblogs.com/qijinbiao/p/2635694.html
Copyright © 2011-2022 走看看