hdu2955Robberies (01背包,反向思维)
来源:互联网 发布:酷我音乐有mac 编辑:程序博客网 时间:2024/05/24 03:19
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.
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 .
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.
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
30.04 31 0.022 0.033 0.050.06 32 0.032 0.033 0.050.10 31 0.032 0.023 0.05
Sample Output
246解题:用反向的思维,所有给出的概率都是被捉概率,那么想要成功的逃出,则逃出的概率越大越好。以钱为背包,价值为概率。每一个包里的钱可能是一家银行的也可是多家的,那么要完成抢多家银行看成一个事件,那要完成抢都要逃过,那么抢每一家看做一步,组合起来,也就完成了这件事,那么每个概率都是要相乘的,所乘结果也就是完成这件事的概率。#include<stdio.h>#define N 10100#define e 0.00000001struct nnn{ int w; double p;};int sum;double P,dp[N];double max(double a,double b){return a>b?a:b;}void zeroonepack(int use,double p){ for(int s=sum;s>=use;s--) dp[s]=max(dp[s],dp[s-use]*p);}int main(){ nnn a[N]; int t,n; scanf("%d",&t); while(t--) { scanf("%lf%d",&P,&n); P=1-P;sum=0; for(int i=1;i<=n;i++) { scanf("%d%lf",&a[i].w,&a[i].p); a[i].p=1-a[i].p; sum+=a[i].w; } dp[0]=1; for(int i=1;i<=sum;i++) dp[i]=0; for(int i=1;i<=n;i++) zeroonepack(a[i].w,a[i].p); for(int i=sum;i>=0;i--) if(dp[i]>=P) {printf("%d\n",i);break;} }}
- hdu2955Robberies (01背包,反向思维)
- hdu2955Robberies 01背包水题
- hdu 2955 Robberies(概率01背包,反向思维)
- hdu2955robberies
- hdu2955Robberies
- hdu2955Robberies
- HDU2955Robberies (0-1背包问题)
- 反向思维
- 01背包详解,DP思维的转换
- hdu 3466 (01背包+思维排序)
- 如何运用反向思维解决问题?
- Robberies(逆向思维转换+01背包好题)
- CF----思维排序+01背包 山东省第八届省赛K题
- hdu 6092 Rikka with Subset【01背包+思维】
- HDU 6092 Rikka with Subset(01背包 思维)
- hdu 6092 Rikka with Subset(逆向01背包+思维)
- ZOJ 3956 Course Selection System 【 思维 + 01背包 】
- hdu2955robberies一维数组
- UVA - 11468 Substring
- 【软件工程】总结心得
- Linux 中tar解压包出现的问题解决
- 【Cocos2d-x 控件篇001】我最爱的九妹和按钮事件
- Exercise 2.1
- hdu2955Robberies (01背包,反向思维)
- HDU1023&&大数的规律题
- MySql注入科普
- listview分页加载!!!
- Windows 7语言包 包罗万象的语言包 全世界 windows7系统下载 windowsxp下载 windows8语言包
- 单用户模式下 /etc/fstab文件不能修改的解决办法
- XSS与字符编码的那些事儿
- 《Lua 5.0的实现》第二章 - Lua的设计和实现概述
- dedecms seo