zoukankan      html  css  js  c++  java
  • hdu 2955 Robberies(01背包)

    01背包的变形,因为概率P为浮点数所以不能作为背包容量,只能找能抢的最大金额作为容量。刚开始还傻傻地想求最小被抓的概率,但是细想被抓只有一次,所以只能求最大逃跑概率。

    View Code
     1 /*
     2 Author:Zhaofa Fang
     3 Lang:C++
     4 */
     5 #include <cstdio>
     6 #include <cstdlib>
     7 #include <sstream>
     8 #include <iostream>
     9 #include <cmath>
    10 #include <cstring>
    11 #include <algorithm>
    12 #include <string>
    13 #include <utility>
    14 #include <vector>
    15 #include <queue>
    16 #include <stack>
    17 #include <map>
    18 #include <set>
    19 
    20 using namespace std;
    21 
    22 typedef long long ll;
    23 #define DEBUG(x) cout<< #x << ':' << x << endl
    24 #define PII pair<int,int>
    25 #define PB push_back
    26 #define MP make_pair
    27 #define FI first
    28 #define SE second
    29 #define lowbit(x) (x&(-x))
    30 #define INF (1<<30)
    31 
    32 int m[105];
    33 double p[105];
    34 double dp[10005];
    35 int main()
    36 {
    37     #ifndef ONLINE_JUDGE
    38     freopen("in","r",stdin);
    39     #endif
    40     int T;
    41     cin>>T;
    42     while(T--)
    43     {
    44         double P;
    45         int n;
    46         scanf("%lf%d",&P,&n);
    47         int M=0;
    48         for(int i=1;i<=n;i++)scanf("%d%lf",&m[i],&p[i]),M+=m[i];
    49         for(int i=1;i<=M;i++)dp[i] = 0;
    50         dp[0] = 1;
    51         for(int i=1;i<=n;i++)
    52         {
    53             for(int j=M;j>=m[i];j--)
    54             {
    55                 dp[j] = max(dp[j],dp[j-m[i]]*(1-p[i]));
    56             }
    57         }
    58         int ans = 0;
    59         for(int i=M;i>=0;i--)
    60         {
    61             if(P>=(1-dp[i]))
    62             {
    63 
    64                 ans = i;
    65                 break;
    66             }
    67         }
    68         printf("%d\n",ans);
    69     }
    70     return 0;
    71 }
  • 相关阅读:
    servlet乱码以及解决
    javascript正则简单入门
    javascript创建自定义对象和prototype
    java 对象初始化和代码块初始化顺序
    java final 和instanceof 关键字
    【记录】自学JavaScript第七周
    【记录】自学JavaScript第六周
    获取节点名称及节点值
    正则表达式中的替换字符串示例
    部分正则表达式基本函数用法示例
  • 原文地址:https://www.cnblogs.com/fzf123/p/2740129.html
Copyright © 2011-2022 走看看