HDU_2955_Robberies_01背包
Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u
Description

For a few months now, Roy has been assessing the security of various banks and the amount of cash they hold. He wants to make a calculated risk, and grab as much money as possible.
His mother, Ola, has decided upon a tolerable probability of getting caught. She feels that he is safe enough if the banks he robs together give a probability less than this.
Input
Bank j contains Mj millions, and the probability of getting caught from robbing it is Pj .
Output
Notes and Constraints
0 < T <= 100
0.0 <= P <= 1.0
0 < N <= 100
0 < Mj <= 100
0.0 <= Pj <= 1.0
A bank goes bankrupt if it is robbed, and you may assume that all probabilities are independent as the police have very low funds.
Sample Input
0.04 3
1 0.02
2 0.03
3 0.05
0.06 3
2 0.03
2 0.03
3 0.05
0.10 3
1 0.03
2 0.02
3 0.05
Sample Output
4
6
#include<stdio.h>
double max(double a,double b)
{
return a>b?a:b;
}
int main()
{
int t,n,M[110],i,j,sum;
double p,P[110],dp[10010]; //dp为背包最大容量
scanf("%d",&t);
while(t--)
{
sum=0;
scanf("%lf%d",&p,&n);
dp[0]=1; //当抢到的钱为零时,不被抓的概率为1
for(i=0; i<n; i++)
{
scanf("%d%lf",&M[i],&P[i]);
sum+=M[i];
}
for(i=1; i<=sum; i++) //需将除dp[0]以外的所有元素初始化为零,因为状态转移方程要比较大小再赋值,见图。之前错在此处。
dp[i]=0.0;
for(i=0; i<n; i++) //此循环为遍历银行
for(j=sum; j>=M[i]; j--) //此处不易理解。假设银行(1,0.02)(2,0.03)(3,0.05) 此循环大概功能:dp[6]=dp[3]*P[3],dp[3]=dp[1]*P[2].
dp[j]=max(dp[j],dp[j-M[i]]*(1-P[i])); //状态转移方程
for(i=sum; i>=0; i--)
if(dp[i]>=(1.0-p))
{
printf("%d\n",i);
break;
}
}
return 0;
}

HDU_2955_Robberies_01背包的更多相关文章
- 【USACO 3.1】Stamps (完全背包)
题意:给你n种价值不同的邮票,最大的不超过10000元,一次最多贴k张,求1到多少都能被表示出来?n≤50,k≤200. 题解:dp[i]表示i元最少可以用几张邮票表示,那么对于价值a的邮票,可以推出 ...
- HDU 3535 AreYouBusy (混合背包)
题意:给你n组物品和自己有的价值s,每组有l个物品和有一种类型: 0:此组中最少选择一个 1:此组中最多选择一个 2:此组随便选 每种物品有两个值:是需要价值ci,可获得乐趣gi 问在满足条件的情况下 ...
- HDU2159 二维完全背包
FATE Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submis ...
- CF2.D 并查集+背包
D. Arpa's weak amphitheater and Mehrdad's valuable Hoses time limit per test 1 second memory limit p ...
- UVALive 4870 Roller Coaster --01背包
题意:过山车有n个区域,一个人有两个值F,D,在每个区域有两种选择: 1.睁眼: F += f[i], D += d[i] 2.闭眼: F = F , D -= K 问在D小于等于一定限度的时 ...
- 洛谷P1782 旅行商的背包[多重背包]
题目描述 小S坚信任何问题都可以在多项式时间内解决,于是他准备亲自去当一回旅行商.在出发之前,他购进了一些物品.这些物品共有n种,第i种体积为Vi,价值为Wi,共有Di件.他的背包体积是C.怎样装才能 ...
- POJ1717 Dominoes[背包DP]
Dominoes Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 6731 Accepted: 2234 Descript ...
- HDU3466 Proud Merchants[背包DP 条件限制]
Proud Merchants Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/65536 K (Java/Others) ...
- POJ1112 Team Them Up![二分图染色 补图 01背包]
Team Them Up! Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 7608 Accepted: 2041 S ...
随机推荐
- AE After Effect 渲染如何输出设置
各种输出设置值的对比情况. Microsoft Video1压缩方法情况(该模式下无法采用RGB+Alpha): 一 深度为"数千种颜色",缩放为1280×720(HDV/HDTV ...
- EXISTS 执行顺序 CLR-2-2-引用类型和值类型
EXISTS 执行顺序 select * from a where a.s_status=1 and exists (select orderid from b on a.orderid=b.or ...
- HDU 1231——最大连续子序列(DP)
最大连续子序列 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Su ...
- C# 实现WEBSOCKET聊天应用示例
C# 实现WEBSOCKET聊天应用示例 http://blog.163.com/da7_1@126/blog/static/10407267820121016103055506/ 2012-11-1 ...
- Android架构的简单探讨(一)
在CSDN上看到这样一篇译文,虽然最终的解决方案要按照自己特定的项目去设计,但该文还是引起了很多自己的共鸣,原文猛戳这里. 这是他提出的基于Messaging的MVC框架: 其中包含的设计思想在于:哪 ...
- PHP连接数据库(注冊页面的增删改查)
1.连接数据库 ---------–connect.php--------------– <?php //本地測试 $host = '127.0.0.1'; $port = 3306; $use ...
- LINQ实现
public static IEnumerable<TSource> MyWhere<TSource>( this IEnumerable<TSource> ...
- 第一次PHP面试题
1.标记符title是放在标记符什么之间:head 2.级联样式表文件的扩展名:CSS 3.html中<pre>的作用:pre 元素可定义预格式化的文本 4.mysql_affected_ ...
- ip(点分十进制 <==> 二进制整数)之间的转换
linux的套接字部分比较容易混乱,在这里稍微总结一下. 地址转换函数在地址的文本表达式和它们存放在套接字地址结构中的二进制值进行转换. 地址转换函数有四个:其中inet_addr 和 inet_nt ...
- Ubuntu16.04下搭建开发环境及编译tiny4412 Android系统【转】
本文转载自:http://blog.csdn.net/songze_lee/article/details/72808631 版权声明:本文为博主原创文章,未经博主允许不得转载. 1.安装ssh服务器 ...