hdu2955 01背包
2016-03-15 23:06
190 查看
题意:一个强盗要去抢劫银行,对于每个银行来说,都有一个不被抓的概率p,和能抢劫到的钱数money,每个银行最多只可以被抢劫一次。问在不被抓的总概率P下,怎样得到最大价值的钱数;
思路:最大的难点是因为存在小数,思路要转换,可以将所用银行里的钱看作背包容量,每一家银行的钱看作重量,不被抓到的概率看作价值
代码:
思路:最大的难点是因为存在小数,思路要转换,可以将所用银行里的钱看作背包容量,每一家银行的钱看作重量,不被抓到的概率看作价值
代码:
#include<stdio.h> #include<string.h> int a[10001]; double b[10001]; double dp[10001]; double max(double x,double y) { return x>y?x:y; } int main() { int t; scanf("%d",&t); while(t--) { int i,j,k,sum; double p; sum=0; scanf("%lf%d",&p,&k); p=1-p; for(i=1;i<=k;i++) { scanf("%d%lf",&a[i],&b[i]); sum+=a[i]; b[i]=1-b[i]; } memset(dp,0,sizeof(dp)); dp[0]=1; for(i=1;i<=k;i++) for(j=sum;j>=a[i];j--) dp[j]=max(dp[j],dp[j-a[i]]*b[i]); for(i=sum;i>=0;i--) { if(dp[i]>=p) { break; } } printf("%d\n",i); } }
相关文章推荐
- struts2——(8)(①3种情况通配符的使用方法②动态方法调用 )
- 大道至简阅读笔记01
- 接续符和转义符
- 正则表达式初学习
- HTTP 请求方式: GET和POST的比较
- .net的锁
- 能不转发的就不要转发——记一次文件下载丢包填坑之旅
- [Audio processing] wav音频文件读取int和double数组的关系
- 语义化标签,和类名说再见
- 二叉树系列——二叉树的定义以及各种遍历方式
- 【LeetCode】278. First Bad Version
- 2016SDAU课程练习一1016Q
- 47. Permutations II LeetCode
- 线程间协作:wait、notify、notifyAll
- 展示浮点数格式C代码
- 关于java对象复制clone 给一个对象赋值 会随原来的对象变化
- C-SCAUoj 删除字符串中的空格
- Android之Sqlite数据库的使用
- +++JavaScript split() 方法+++
- 打气筒