标签:
Description
Input
Output
Sample Input
Sample Output
#include<cstdio>
#include <iostream>
#include<cstring>
using namespace std;
int money[101] , nkind  , sum ;
float pro[101] , npro , fine[11100];
int main ()
{
    int cas,i, j ;
    scanf ( "%d" , &cas ) ;//案例数
    while ( cas -- )
    {
          sum = 0 ;
          scanf ( "%f%d" , &npro , &nkind ) ;//最高的概率数,和银行数
          for ( i = 0 ; i < nkind ; i ++ )
          {
              scanf ( "%d%f"  , money+i, pro+i ) ;//银行钱数和被抓的概率数
              sum += money[i] ;
          }
          memset( fine , 0 , sizeof (fine) ) ;
          fine[0] = 1 ; //背包中的钱为0时,是最安全的,所以安全概率为1
          float  p = 1 - npro ;//最低安全概率
          for ( i = 0 ; i < nkind ; i ++ )//银行数
          { 
              for ( j = sum ; j >= money[i] ; j -- )//
                  if ( fine[j] < fine[j-money[i]]*(1-pro[i]) )//抢到j元钱的安全概率为fine[j]
                  {
                       fine[j] = fine[j-money[i]]*(1-pro[i]) ;
                  }
          }
          for ( i = sum ; i >= 0 ; i -- )
              if ( fine[i] >=  p )//安全的概率大于等于被抓的最低概率时
              {
                   printf ( "%d\n" , i ) ;
                   break ;
              }
    }
    return 0 ;
}
标签:
原文地址:http://www.cnblogs.com/xinxiangqing/p/4725520.html