HDU 2955(Robberies)0-1背包问题
来源:互联网 发布:手指数算法5加6怎么算 编辑:程序博客网 时间:2024/06/06 03:41
这题看起来有点像最大报销额度,貌似要求的问题是小数。
题目给的是每个银行被抓的概率,我们要转换成逃跑的概率,而且概率是乘积:(1-p1)*(1-p2)...*(1-pn),才是跑掉的概率。
0-1背包问题,把概率当容量显然不行,精度不行,不像最大报销额度只要2位小数。我们把概率当价值,钱当容量,计算出抢到m钱的最大逃跑率是多少。然后从所有银行钱总量往前找,找到第一个逃跑概率满足要求的便是能抢到最多的钱。
还有比较大小时候的返回类型
代码:
#include<stdio.h>#include<string.h>double Max(double a,double b){return a>b?a:b;}int main(){double p[101],dp[10001];double pp;int val[101];int T,i,j,n,maxm;scanf("%d",&T);while(T--){scanf("%lf%d",&pp,&n);memset(val,0,sizeof(val));memset(p,0,sizeof(p));memset(dp,0,sizeof(dp));maxm=0;for(i=0;i<n;i++){scanf("%d%lf",&val[i],&p[i]);p[i]=1-p[i];maxm+=val[i];}dp[0]=1;for(i=0;i<n;i++){for(j=maxm;j>=val[i];j--)dp[j]=Max(dp[j-val[i]]*p[i],dp[j]);}for(i=maxm;i>=0;i--)if(1-dp[i]<pp)break;printf("%d\n",i);}return 0;}
0 0
- HDU 2955(Robberies)0-1背包问题
- HDU 2955 Robberies(0-1背包问题的简单变形)
- HDU ACM 2955 Robberies->0-1背包问题
- 动态规划:HDU-2955-0-1背包问题:Robberies
- 【HDU 2955】【背包问题】Robberies
- hdu 2955 dp(0,1背包) Robberies
- hdu 2955 Robberies(0/1背包)
- hdu 2955 Robberies (0 1背包)
- HDU(2955)Robberies (0-1背包)
- hdu 2955 Robberies(0/1背包)
- hdu 2955 Robberies (0-1背包)
- HDU 2955 Robberies (0-1背包)
- hdu 2955 Robberies 01背包问题
- [HDU 2955] Robberies (01背包问题)
- HDU 2955 Robberies(01背包问题)
- hdu 2955 Robberies 01背包问题
- hdu 2955(01背包问题)Robberies
- HDU 2955 Robberies(01背包问题)
- Android中px和dp的互相转换
- Android : Value of type java.lang.String cannot be converted to JSONObject 异常
- wifi详解四
- IOS 推送详解
- Android通过Post与Get提交数据
- HDU 2955(Robberies)0-1背包问题
- struct和class的区别
- SQL Server 存储过程
- Android对SQLite批量添加数据
- VC CComboBox用法
- android使用startActivityForResult多级回传参数
- 20. Valid Parentheses
- Scala学习笔记三
- 从linux主目录中的makefile文件分析编译构成。。。