• 01小偷银行


    http://acm.hdu.edu.cn/showproblem.php?pid=2955

    类似hdu1203 也是概率题

    只需知道 p逃走=1-p抓住

    所以先算出每个钱数所代表的最大逃走概率,在最后跟 1-m 比较 

     1 #include<iostream>
     2 #include<algorithm>
     3 #include<cstdio>
     4 #include<cstring>
     5 #include<cmath>
     6 #include<queue>
     7 #define mem(a) memset(a,0,sizeof(a))
     8 using namespace std;
     9 
    10 int main()
    11 {
    12    int n,w[10005],t;
    13    double m,c[10005],f[10005];
    14    while(cin>>t)
    15    {
    16      while(t--)
    17      {
    18          cin>>m>>n;
    19          int sum=0;
    20          for(int i=0;i<n;i++)
    21          {cin>>w[i]>>c[i]; sum+=w[i];}
    22          for(int i=0;i<=sum;i++)
    23             f[i]=0;
    24          f[0]=1;//使得(1-c[i])有值可乘
    25          for(int i=0;i<n;i++)
    26          {
    27              for(int k=sum;k>=w[i];k--)
    28              {
    29                  f[k]=max(f[k],f[k-w[i]]*(1-c[i])); //每个钱数最大的逃走概率
    30              }
    31          }
    32          for(int i=sum;i>=0;i--)
    33          {
    34 
    35              cout<<f[i]<<endl; //1-m为逃走的概率
    36          }
    37          for(int i=sum;i>=0;i--)
    38          {
    39 
    40              if(f[i]>1-m) {cout<<i<<endl;break;} //1-m为逃走的概率
    41          }
    42 
    43      }
    44    }
    45    return 0;
    46 }
    View Code
  • 相关阅读:
    startup毕业论文
    LeetCode OJ
    LeetCode OJ
    LeetCode OJ
    LeetCode OJ
    LeetCode OJ
    install
    逻辑卷(lv)管理(LVM)
    mke2fs
    cat & 文件结束符
  • 原文地址:https://www.cnblogs.com/XXrll/p/10187316.html
Copyright © 2020-2023  润新知