hdoj2955 Robberies(01背包)
题目链接
http://acm.hdu.edu.cn/showproblem.php?pid=2955
题意
有n家银行,每家银行有两个属性:钱数m,概率p,p表示抢这家银行被逮着的概率。有一个人想抢银行,他认为只要在他抢一些银行后,被逮着的概率(指抢完所有银行被逮着的概率)小于pm就可以抢,求这个人最多可以抢多少钱。
思路
01背包问题,这题要注意钱数是背包容量,成功逃走的概率为价值(如果反过来会发现代码没办法写,因为反过来数组dp下标为小数)。数组dp[i]表示在抢的钱数为i的情况下,成功逃走概率的最大值。求出成功逃走概率的最大值后,1-最大值即为被逮着概率的最小值,再拿最小值与pm比较即可。此外还要注意dp数组的初始化。
代码
1 #include <algorithm> 2 #include <iostream> 3 #include <cstring> 4 #include <cstdio> 5 using namespace std; 6 7 const int N = 110; 8 const int M = 100 * 100 + 10; 9 double p[N]; 10 int m[N]; 11 double dp[M]; 12 13 int main() 14 { 15 //freopen("hdoj2955.txt", "r", stdin); 16 int t, n; 17 double pm; 18 cin >> t; 19 while (t--) 20 { 21 int sum = 0; 22 cin >> pm >> n; 23 for (int i = 0; i < n; i++) 24 { 25 cin >> m[i] >> p[i]; 26 p[i] = 1 - p[i]; //成功逃走的概率 27 sum += m[i]; 28 } 29 30 memset(dp, 0, sizeof(dp)); 31 dp[0] = 1; //没有抢钱,成功逃走的概率为1 32 for (int i = 0; i < n; i++) 33 { 34 for (int j = sum; j >= m[i]; j--) 35 dp[j] = max(dp[j], dp[j - m[i]] * p[i]); 36 } 37 38 for (int i = sum; i >= 0; i--) 39 if (1 - dp[i] < pm) 40 { 41 cout << i << endl; 42 break; 43 } 44 } 45 return 0; 46 }
转载于:https://www.cnblogs.com/sench/p/8017431.html
hdoj2955 Robberies(01背包)相关推荐
- HDOJ2955 Robberies(01背包,概率)
http://acm.hdu.edu.cn/showproblem.php?pid=2955 这道DP题WA了. 今天看了一下,WA在了double max(int x,int y)上,x和y都应该是 ...
- HDU - Robberies(01背包)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2955 Time Limit: 2000/1000 MS (Java/Others) Memory Li ...
- HDOJ 2955 Robberies (01背包)
10397780 2014-03-26 00:13:51 Accepted 2955 46MS 480K 676 B C++ 泽泽 http://acm.hdu.edu.cn/showproblem. ...
- 暑假N天乐 —— 01背包及变形
暑假集训的第一天 第二天了. 决定还是先把基础巩固一下好了,万一后面训练赛出事故更尴尬. 所以今天的主题是 -- 01背包及变形 动态规划概念 动态规划(Dynamic programming,DP) ...
- HDU 2955 Robberies(概率DP,01背包)题解
题意:给出规定的最高被抓概率m,银行数量n,然后给出每个银行被抓概率和钱,问你不超过m最多能拿多少钱 思路:一道好像能直接01背包的题,但是有些不同.按照以往的逻辑,dp[i]都是代表i代价能拿的最高 ...
- 01背包经典例题详解
转载自点击打开链接 首先01背包题目的雏形是 有N件物品和一个容量为V的背包.第i件物品的费用是c[i],价值是w[i].求解将哪些物品装入背包可使价值总和最大. 从这个题目中可以看出,01背包的特点 ...
- 【背包专题】01背包
暑假集训开始了,按照队里的分配,我是弄DP的,嘛,于是我又一次的开始了从01背包开始学习,昨天将杭电的几道01背包重新做了一遍,下面讲讲我自己对于01背包的理解. 首先01背包题目的雏形是 有N件物品 ...
- hdu 2955 01背包
http://acm.hdu.edu.cn/showproblem.php?pid=2955 如果认为:1-P是背包的容量,n是物品的个数,sum是所有物品的总价值,条件就是装入背包的物品的体积和不能 ...
- 浅说——九讲背包之01背包
所谓九讲,也就是: 0/1背包 0/1背包降维 完全背包 多重背包(二进制优化) 混合背包 二维费用背包 分组背包 有依赖的背包 背包的方案总数\背包的具体方案路径 0/1背包: [问题描述](经典) ...
- Codeforces Round #104 (Div. 2) E DP(01背包模型) +组和+除法取模求逆元
题意: 规定只包含4或7的数为幸运数字,给定n个数的序列,求他的子序列,使得该子序列的长度为k并且满足该子序列中不存在相同的两个幸运数字.问一共寻在多少种可能.(只要该数的下标不同则认为是不同的序列) ...
最新文章
- vmware迁移问题
- 外企面试官们爱提的十个问题
- Linux上操作Docker守护态运行
- Android NDK学习(3)使用Javah命令生成JNI头文件 .
- Spring Boot 10:处理Json数据中的null值
- lnmp构架——对tomcat详解
- 摄影测量--测边交会
- BZOJ 2436 Noi嘉年华(优化DP)
- java性能、代码优化
- wordpress后台加载速度异常缓慢排查记录(原创)
- 2022.4.7网页一直在加载中,无提示
- mysql校验规则居民身份证号_身份证号规则及校验
- PyQt4安装使用以及pycharm环境配置
- 不同编程语言语言的适用场景
- 计算机自动维护有用吗,Win10系统关闭自动维护功能提高系统运行速度
- Flutter流畅性fps计算
- 进制转换对学计算机的意义,浅析进制转换在计算机应用中的技巧.docx
- 程序员对于35岁的担忧:未来真的没有什么好的前景吗?
- ubuntu wps缺少字体_一个字体:系统风汜霰更纱黑
- 有一篇文章,共有3行文字,每行有80个字符。要求分别统计出其中英文大写字母,小写字母,数字,空格以及其他字符的个数。谭浩强《C程序设计课后习题》第6章第10题。
热门文章
- imu相机标定_【光电视界】多传感器融合标定方法汇总
- php语句insert,SQL INSERT INTO
- 特征图注意力_CV注意力机制论文阅读笔记
- keyshot分辨率多少合适_分辨率单位及换算详解
- python 函数定义位置_PYTHON--函数定义
- Unity 使物体朝向某个方位
- 基于etcd实现大规模服务治理应用实战
- 高16位低16位什么意思_为什么模拟量模块16位要比13位转换精度高,高多少?
- 银行客户交易行为预测:如何降低内存的使用量
- 【RLchina第二讲】 Foundations of Reinforcement Learning