标签:
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