转载请注明出处:http://blog.csdn.net/u012860063

题目链接:

pid=2955">http://acm.hdu.edu.cn/showproblem.php?pid=2955

Problem Description
The aspiring Roy the Robber has seen a lot of American movies, and knows that the bad guys usually gets caught in the end, often because they become too greedy. He has decided to work in the lucrative business of bank robbery only
for a short while, before retiring to a comfortable job at a university.






For a few months now, Roy has been assessing the security of various banks and the amount of cash they hold. He wants to make a calculated risk, and grab as much money as possible.





His mother, Ola, has decided upon a tolerable probability of getting caught. She feels that he is safe enough if the banks he robs together give a probability less than this.
 
Input
The first line of input gives T, the number of cases. For each scenario, the first line of input gives a floating point number P, the probability Roy needs to be below, and an integer N, the number of banks he has plans for. Then
follow N lines, where line j gives an integer Mj and a floating point number Pj .

Bank j contains Mj millions, and the probability of getting caught from robbing it is Pj .
 
Output
For each test case, output a line with the maximum number of millions he can expect to get while the probability of getting caught is less than the limit set.



Notes and Constraints

0 < T <= 100

0.0 <= P <= 1.0

0 < N <= 100

0 < Mj <= 100

0.0 <= Pj <= 1.0

A bank goes bankrupt if it is robbed, and you may assume that all probabilities are independent as the police have very low funds.
 
Sample Input
3
0.04 3
1 0.02
2 0.03
3 0.05
0.06 3
2 0.03
2 0.03
3 0.05
0.10 3
1 0.03
2 0.02
3 0.05
 
Sample Output
2
4
6
 
Source
 
Recommend
gaojie   |   We have carefully selected several similar problems for you:  

pid=1203">1203 2159 2844 1087 1505 

题意:

抢银行。抢每一个银行被抓的几率为caught[],互为独立事件,在容忍上限内,抢最多的钱。

01背包,但须要改变一点。须要将能抢来的最多的钱最为背包容量

代码例如以下:

/*此题关键是找到背包的容量和价值*/
#include <cstdio>
#include <cstring>
#define N 10047
int M[N];
double P[N],f[N];
double max(double a,double b)
{
if(a > b)
return a;
return b;
}
int main()
{
double p;
int T,n,i,j,sum;
scanf("%d",&T);
while(T--)
{
sum = 0;
memset(f,0,sizeof(f));//要对数组进行初始化
scanf("%lf%d",&p,&n);
p =1-p;;//成功逃走的概率
f[0] = 1;//未抢劫一分钱那么逃走的概率就为1
for(i = 0 ; i < n ; i++)
{
scanf("%d%lf",&M[i],&P[i]);
P[i] = 1-P[i];
sum+=M[i];//算出银行总钱数
}
for(i = 0 ; i < n ; i++)
{
for(j = sum ; j >= M[i] ; j--)
{
f[j] = max(f[j],f[j-M[i]]*P[i]);
}//这里的每次成功的概率须要进行乘法运算。由于是两次成功的概率所以是乘法
}
for(i = sum ; i >= 0 ; i--)
{
if(f[i] >= p)
break;//找出能够成功逃走而且逃走概率不超过警戒值
}
printf("%d\n",i);
}
return 0;
}

最新文章

  1. jQuery高级编程
  2. Bugtags 实时跟踪插件 - BugtagsInsta
  3. Android中一张图片加载后所占用内存大小的获取与测试
  4. Shell 显示带颜色字体
  5. U盘安装ubuntu server 12.04的问题检测不到CDROM的解决
  6. scala打印九九乘法表的5种实现
  7. activiti5.15中文乱码问题
  8. Sql 使用备份还是使用脚本
  9. STL algorithm算法is_permutation(27)
  10. C#5.0新特性
  11. kbengine所有的demo源代码
  12. StringBulider简单用法
  13. mongodb在windows下安装启动
  14. ubuntu14.04 安装PIL库出现OError: decoder jpeg not available 的解决方案
  15. 根据日志分析异常:There is already &#39;XXX&#39; bean method
  16. #个人博客作业Week3——必应词典案例分析
  17. web开发之环境配置和文件系统
  18. C++之初体验
  19. 关于SpringBoot中静态资源访问的问题
  20. Python开发简单爬虫

热门文章

  1. C#中静态变量和 静态方法的作用
  2. 利用js生成二维码
  3. [nowcoder_Wannafly挑战赛4_F]线路规划
  4. docker 集群 flannel网络构建
  5. hash function 字符串哈希函数
  6. 【电脑使用经验】怎么查看无线网络中电脑的IP地址?
  7. Java EE学习记录(一)
  8. java中Map的entrySet 和keySet的使用
  9. Netty内存池
  10. POJ 3268 Silver Cow Party (Dijkstra + 优先队列)