Robberies(HDU
来源:互联网 发布:淘宝培训课 编辑:程序博客网 时间:2024/05/22 09:38
分析:01背包问题,但是该题很容易会用概率作为背包容量,这是不对的,概率是浮点数,则需扩大背包容量,则背包容量是钱数,银行总钱数就是背包最大容量,dp[i] 代表钱数为i时的成功逃跑概率(即不被抓到),成功逃跑就是没有被任何银行抓到,若被一个银行抓到就不算成功逃跑,则成功逃跑概率p = (1-p1)(1-p2)(1-p3) ,p1,p2,p3是每个银行被抓到的概率,最后按照钱数从大到小遍历一遍,找到满足条件的最大钱数。
代码如下:
#include <iostream>#include<cstring>#include<cstdio>#include<vector>#include<algorithm>#define INF 0x3f3f3f3fusing namespace std;const int maxn=100+20;int m[maxn];double p[maxn],dp[maxn*maxn];int main(){ int T; scanf("%d",&T); while(T--) { memset(dp,0,sizeof(dp)); double p0; int n; scanf("%lf%d",&p0,&n); int sum=0; //sum求背包容量最大值 for(int i=0;i<n;i++) { scanf("%d%lf",&m[i],&p[i]); sum+=m[i]; } dp[0]=1; //抢不到任何钱时逃跑概率为1 for(int i=0;i<n;i++) { for(int j=sum;j>=m[i];j--) dp[j]=max(dp[j],dp[j-m[i]]*(1-p[i])); } for(int i=sum;i>=0;i--) //按照钱数从大到小遍历 { if(dp[i]>(1-p0)) { printf("%d\n",i); break; } } }}
阅读全文
0 0
- HDU Robberies
- hdu Robberies
- 【hdu】【Robberies】
- HDU Robberies
- Robberies HDU
- Robberies HDU
- Robberies HDU
- Robberies(HDU
- hdu 2955 Robberies
- HDU 2955 - Robberies
- hdu 2955 Robberies DP
- Hdu 2955 - Robberies
- hdu 2955 Robberies
- hdu 2955 Robberies
- hdu Robberies 概率DP
- hdu 2955 Robberies
- hdu 2955 Robberies
- HDU 2955 Robberies
- 欢迎使用CSDN-markdown编辑器
- 记录Sqlserver2012附加Sqlserver2008的数据库出错的解决方案一、摘要 最近在实验里面用台式编写好了一个软件,想移植到家里的笔记本上。在附加数据的时候却出现了错误,具体也没有提示
- 安卓cts兼容性测试入门
- Salesforce HaoIDE加载org中Lightning组件
- tkinter GUI编程(1)
- Robberies(HDU
- GstarCAD 2018 中文免费版下载附安装教程
- iPhone 8/iPhone X 对游戏开发程序员影响有多大
- 交换字节
- 老板客户让加班重做?除了画圈圈诅咒他们,你还可以这么办…
- 雷军:你写程序有写诗一样的感觉吗?没有就做产品经理吧
- jQuery中$.inArray(value,array,[fromIndex]))方法使用
- 我的老公是枚码农
- 实现Spring+SpringMVC+MyBatis的整合