hdu 2955 Robberies(01背包)
来源:互联网 发布:淘宝网商贷款扣钱 编辑:程序博客网 时间:2024/06/02 20:08
hdu 2955 Robberies(01背包)
题目大意:有一个小偷要偷银行的钱,可是他偷没家银行总是有一定的概率被抓,现在给了你一个概率P,只要他被抓的概率乘积不大与P,他就是安全的。
问你在他安全的情况下,他最多可以偷多少钱。
做这道题是,错误的认为题目所给的浮点型的数据都是精确到小数点后两位,然后把概率放大100倍,转换成为熟悉的01背包。。faint。。经测试题目的数据可能达到0.00001,甚至比0.00001还小,,所以必须转换思路,,
于是转成以所有银行的总资产为背包容量V。。求最大的逃跑概率。。
注意:题目给我们的是被抓的概率,,而我们要求最大的逃跑率,需要去被抓的概率pi的补 ,即1-pi
只有逃跑率才会等于各个逃跑率之积,被抓的概率不会等于各个被抓的概率之积 。
struct bank{ int money; double p;}r[M];int n,m;double p,dp[M];void solve(){ CLS(dp,0); dp[0]=1.0;//一分钱没偷,肯定概率为1 for(int i=0;i<n;i++) for(int j=m;j>=r[i].money;j--) dp[j]=max(dp[j-r[i].money]*r[i].p,dp[j]); for(int i=m;i>=0;i--) { if(dp[i]>p) {printf("%d\n",i);return ;} }}int main(){ int T; scanf("%d",&T); while(T--) { m=0; scanf("%lf%d",&p,&n); p=1-p; for(int i=0;i<n;i++) { scanf("%d%lf",&r[i].money,&r[i].p); m+=r[i].money; r[i].p=1-r[i].p; } solve(); } return 0;}
0 0
- hdu 2955 01 背包 Robberies
- hdu 2955 Robberies--01背包
- Hdu 2955 Robberies//01背包
- hdu 2955 Robberies (01背包)
- hdu 2955 Robberies 01背包
- HDU 2955 Robberies(01背包)
- HDU 2955 Robberies (01背包)
- hdu 2955 Robberies(01背包)
- hdu 2955 Robberies(01背包)
- hdu Robberies 2955 01背包
- HDU 2955 - Robberies(01 背包)
- HDU--2955--Robberies--01背包
- hdu-2955-01背包-Robberies
- HDU 2955 Robberies 01背包
- HDU 2955Robberies(01 背包)
- HDU - 2955 Robberies 01背包
- HDU-2955-Robberies【01背包】
- HDU 2955 Robberies 【01背包】
- ios视图层次结构
- Best Time to Buy and Sell Stock II
- HDU 2476 | UVALive 4394 - String painter (区间DP)
- HDOJ题目1285确定比赛名次(拓扑排序,模板)
- 【VB版机房收费】MSFlexGrid控件
- hdu 2955 Robberies(01背包)
- hdu 3874 树状数组+离线处理
- Yii 不完全解决方案(二)
- cocos2d-x ios游戏开发初认识(四) 场景的切换
- poj 3096 Surprising Strings
- hdu 1312 Red and Black(DFS)
- SlindingMenu 侧滑菜单框架使用
- STM32 关于GPIO的问题集锦
- leetcode 刷题之路 91 Pascal's Triangle