题意:给出规定的最高被抓概率m,银行数量n,然后给出每个银行被抓概率和钱,问你不超过m最多能拿多少钱

思路:一道好像能直接01背包的题,但是有些不同。按照以往的逻辑,dp[i]都是代表i代价能拿的最高价值,但是这里的代价是小数,显然不能这么做。还有,被抓概率显然不能直接相加,也不能相乘(越乘越小),这里就需要一些转化。我们把被抓概率转化为逃跑概率也就是1-被抓,那么逃跑概率就能直接相乘了。dp[i]代表拿到i价值的最大逃跑概率,这样又变成了01背包。最后求逃跑概率大于等于1-m的最大的钱。

代码:

#include<cstdio>
#include<set>
#include<map>
#include<cmath>
#include<stack>
#include<vector>
#include<queue>
#include<cstring>
#include<string>
#include<sstream>
#include<iostream>
#include<algorithm>
#define ll long long
using namespace std;
const int maxn = 10000+10;
const int INF = 0x3f3f3f3f;
double dp[maxn];    //逃跑概率
int val[105];
double pr[105];
int main(){int T;scanf("%d",&T);while(T--){double need;int n,sum = 0;scanf("%lf%d",&need,&n);need = 1 - need;for(int i = 1;i <= n;i++){scanf("%d%lf",&val[i],&pr[i]);sum += val[i];pr[i] = 1 - pr[i];}memset(dp,0,sizeof(dp));dp[0] = 1;for(int i = 1;i <= n;i++){for(int j = sum;j >= val[i];j--){dp[j] = max(dp[j],dp[j - val[i]]*pr[i]);}}int ans = 0;for(int i = sum;i >= 0;i--){if(dp[i] >= need){ans = i;break;}}printf("%d\n",ans);}return 0;
}

转载于:https://www.cnblogs.com/KirinSB/p/9491693.html

HDU 2955 Robberies(概率DP,01背包)题解相关推荐

  1. HDU 2602 Bone Collector DP(01背包)

    Bone Collector Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Desc ...

  2. hdu 6149 Valley Numer II(01背包套状压dp)

    题目链接:hdu 6149 Valley Numer II 题意: 给你N个点,有k个为高点,其他为低点,现在这N个点有m条边,问你最多能组成多少个两个高点一个低点,低点和两个高点都有边相连这样的状态 ...

  3. 最大报销额 HDU - 1864(DP+01背包)

    最大报销额 HDU - 1864 点击跳转↑ 题设:多组输入,每组输入一对Q和N,分别代表当前的公费,和需要报销的账单总数.接下来N行,每行开始一个m,接下来是m项物品的名称和价格.求:在所有符合报销 ...

  4. hdu 1864 最大报销额01背包dp

     最大报销额 Time Limit : 1000/1000ms (Java/Other)   Memory Limit : 32768/32768K (Java/Other) Total Subm ...

  5. HDU 1864 最大报销额 (dp 01背包)

    最大报销额 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Subm ...

  6. HDu 3449 (有依赖的01背包) Consumer

    题意: 有n件物品,对应有不同的价格和价值,这是典型的01背包.但现在有了一个限制,要买物品先买能装这件物品的特定的盒子,盒子的价值为0 代码理解得还不是太好,感觉这是一个"二重" ...

  7. ☆【UVA - 624 】CD(dp + 0-1背包 + 记录路径)

    题干: You have a long drive by car ahead. You have a tape recorder, but unfortunately your best music ...

  8. [DP][01背包]积木城堡

    动态规划 积木城堡 时间限制: 1 Sec 内存限制: 128 MB 题目描述 XC的儿子小XC最喜欢玩的游戏用积木垒漂亮的城堡.城堡是用一些立方体的积木垒成的,城堡的每一层是一块积木.小XC是一个比 ...

  9. Codeforces Round #104 (Div. 2) E DP(01背包模型) +组和+除法取模求逆元

    题意: 规定只包含4或7的数为幸运数字,给定n个数的序列,求他的子序列,使得该子序列的长度为k并且满足该子序列中不存在相同的两个幸运数字.问一共寻在多少种可能.(只要该数的下标不同则认为是不同的序列) ...

最新文章

  1. C#参考之方法参数关键字:params、ref及out
  2. python访问memcached
  3. python实现简单的api接口-使用Python编写API接口和使用API接口
  4. Linux-压缩成带有时间文件名的文件
  5. OSI七层网络模型浅析
  6. 高性能JavaScript模板引擎原理解析
  7. NWERC 2018——B.Brexit Negotiations
  8. MYSQL数据库安装记
  9. ajax如何进行逻辑判断,如何使Ajax的某些部分同步发生,而前端逻辑异步发生?...
  10. python searchsorted_Python 二分查找与 bisect 模块
  11. 【Web前端】自制精简版的思源黑体ttf(728kb) - 包含2630个常用汉字+字母+数字+常用符号
  12. 微信小程序 —— 成员管理及开发管理
  13. 核密度估计_拔剑-浆糊的传说_新浪博客
  14. 微信里iphone后退不刷新问题解决方案,真实有效
  15. 测试时间不够,项目要如期发布如何保证测试质量
  16. NFC技术有什么特点,NFC主要应用在哪些领域?
  17. 计算机网路——163邮箱授权码
  18. Raspbian镜像无头烧录
  19. Android进阶必备:滑动冲突解决与事件分发机制(附视频讲解)这篇看完还不懂请寄刀片
  20. Win10 home vs pro vs enterprise vs enterprise LTSC

热门文章

  1. RHCSA试题+答案
  2. CentOS 8下 MySQL 8.0 安装部署(亲测)
  3. postgresql事务
  4. ELK下elasticsearch 性能调优
  5. elasticsearch服务相关脚本
  6. postgresql报错 :FATAL: no pg_hba.conf entry for host 192.168.163.130,user postgres,database pos
  7. ST环境进行测试时,事前需要考虑的问题
  8. ITA结合测试(总结之六:ITA上的时间,与本地时间)
  9. eclipse 调试nodejs 发生Failed to connect to standalone V8 VM错误的解决方案
  10. Framework7 + Angular 开发问题解决汇总