zoukankan      html  css  js  c++  java
  • Robberies(HDU2955):01背包+概率转换问题(思维转换)

    Robberies  HDU2955

    因为题目涉及求浮点数的计算:则不能从正面使用01背包求解。。。

    为了能够使用01背包!从唯一的整数(抢到的钱下手)。。。

    之后就是概率的问题:

    题目只是给出被抓的几率,如果同时抢两家银行的话,那么被抓的概率是:

    (1-一家不被抓的概率*另一家不被抓的概率)

    才是同时抢两家被抓的概率!

    最后和题目给出的概率比较取较大值。。。

    那么赋初值的时候dp[0]=1。

    注意:不要误以为精度只有两位。

     1 #include<iostream>
     2 #include<stdio.h>
     3 #include<algorithm>
     4 #include<string.h>
     5 using namespace std;
     6 double n,b[105];
     7 double dp[10005];
     8 int a[105];
     9 int main()
    10 {
    11     int t,m,s,i,j;
    12     scanf("%d",&t);
    13     while(t--)
    14     {
    15         scanf("%lf%d",&n,&m);
    16         n=1-n;
    17         s=0;
    18         for(i=0;i<m;i++)
    19         {
    20             scanf("%d%lf",&a[i],&b[i]);
    21             s+=a[i];
    22             b[i]=1-b[i];
    23         }
    24         memset(dp,0,sizeof(dp));
    25         dp[0]=1;
    26         for(i=0;i<m;i++)
    27             for(j=s;j>=a[i];j--)
    28                 dp[j]=max(dp[j],dp[j-a[i]]*b[i]);
    29         for(j=s;j>=0;j--)
    30             if(dp[j]-n>0.0000001)
    31                 break;
    32         printf("%d
    ",j);
    33     }
    34     return 0;
    35 }
  • 相关阅读:
    python高级编程
    django笔记
    sublime ide
    python3 django mysql
    python win
    linux时区设置
    在实际应用中如何实现切圆角的功能
    display和visiblity在应用中使用哪个好
    看懂UML类图和时序图
    解决Xcode7.2真机调试出现:The account “” has no team with ID “”
  • 原文地址:https://www.cnblogs.com/tt123/p/3292508.html
Copyright © 2011-2022 走看看