• HDU 2955 Robberies


    01背包问题。


    题意是说 你必须窃取银行,除此之外,你会被拘捕一定几率,再就是N银行。

    每个银行都有一定数额的钱。此外,还有会被抓住的概率。

    计算不能赶上偷钱。


    只是非常阴险一道题。说得是被抓的概率。


    你须要算逃跑的概率 然后 (1 - 逃跑的概率)= 被抓的概率。


    这道题不能用概率去算钱。要用钱来算概率。


    #include<cstdio>
    #include<cstring>
    #include<string>
    #include<queue>
    #include<algorithm>
    #include<queue>
    #include<map>
    #include<stack>
    #include<iostream>
    #include<list>
    #include<set>
    #include<cmath>
    #define INF 0x7fffffff
    #define eps 1e-6
    #define LL long long
    using namespace std;
    int n;
    double m;
    double dp[10001];
    int money[101];
    double prob[101];
    
    int main()
    {
        int t;
        scanf("%d",&t);
        while(t--)
        {
            scanf("%lf%d",&m,&n);
            int sum=0;
            m=1.0-m;
            for(int i=0; i<n; i++)
            {
                scanf("%d%lf",&money[i],&prob[i]);
                sum+=money[i];
            }
            memset(dp,0,sizeof(dp));
            dp[0]=1;
            for(int i=0; i<n; i++)
            {
                for(int j=sum; j>=money[i]; j--)
                    dp[j]=max(dp[j],dp[j-money[i]]*(1.0-prob[i]));
            }
            int ans=0;
            for(int i=sum; i>=0; i--)
                //printf("%.2f==
    ",dp[i]);
            {
                if(dp[i]>=m)
                {
                    ans=i;
                    break;
                }
            }
            printf("%d
    ",ans);
        }
    }
    


    版权声明:本文博客原创文章,博客,未经同意,不得转载。

  • 相关阅读:
    处理数据
    Vue--Vue常用指令及操作
    Vue--Vue实例
    ES6--解构赋值
    ES6--入门
    前端模块化开发
    Node.js--入门
    HTML5--canvas与svg的使用
    input整理
    移动端开发入门
  • 原文地址:https://www.cnblogs.com/yxwkf/p/4711863.html
Copyright © 2020-2023  润新知