zoukankan      html  css  js  c++  java
  • HDU2955+DP+背包变形

    View Code
     1 /*
     2 dp[ i ]:偷钱i而不被抓的最大概率(因为要使得被抓的概率最小)
     3 开始想把dp[i]定义为概率为i的最大价值,因为把i放大了100,不过还是不够。
     4 然后看题解才明白要转化,dp[i]:偷i这么多钱的最大不被捕的概率,也就是不被抓的最小概率
     5 */
     6 #include<stdio.h>
     7 #include<string.h>
     8 #include<algorithm>
     9 using namespace std;
    10 const int maxn = 10015;
    11 double dp[ maxn ];
    12 int vi[ maxn ];
    13 double pi[ maxn ];
    14 
    15 int main(){
    16     int T;
    17     scanf("%d",&T);
    18     while( T-- ){
    19         int n;
    20         double V;
    21         scanf("%lf%d",&V,&n);
    22         int sum = 0;
    23         for( int i=0;i<n;i++ ){
    24             scanf("%d%lf",&vi[i],&pi[i]);
    25             sum += vi[i];
    26         }
    27         memset( dp,0,sizeof( dp ) );
    28         dp[ 0 ] = 1;
    29         int res = 0;
    30         for( int i=0;i<n;i++ ){
    31             for( int j=sum;j>=vi[i];j-- ){
    32                 dp[ j ] = max( dp[ j ],dp[ j-vi[i] ]*( 1-pi[i] ) );
    33                 if( dp[j]>=(1-V) ) res = max( res,j );
    34             }
    35         }
    36         printf("%d\n",res);
    37     }
    38     return 0;
    39 }
    keep moving...
  • 相关阅读:
    Rational Rose 2003 逆向工程转换C++ / VC++ 6.0源代码成UML类图
    用VC实现特定编辑框上对回车键响应
    22.职责链模式
    21.策略模式
    20.状态模式
    19.解释器模式
    18.备忘录模式
    17.中介者模式
    16.观察者模式
    15.迭代器模式
  • 原文地址:https://www.cnblogs.com/xxx0624/p/3067470.html
Copyright © 2011-2022 走看看