http://acm.hdu.edu.cn/showproblem.php?pid=2955

题目大意:给你一个劫匪抢银行的最高安全概率,给你银行得到钱数,和劫匪在这个银行可以逃跑的概率,问你最多能抢多少钱

————————

按照一般的思路,背包的容量都想定义为最高安全概率,但是这是浮点数,所以只能用银行所有的钱数作为容量,dp中存储抢完这些钱被抓的概率是多少,然后变量dp的值,看看(1 - dp)什么时候比最高安全概率小,那时候抢到的钱就是安全的

#include <iostream>
#include <cstdio>
#include <string.h>
#include <cmath>
#include <algorithm>
#define eps 1e-9
using namespace std;
const int maxn = 1e5;
double dp[maxn];
double p[maxn];
int value[maxn];
int main()
{
int t;
scanf("%d",&t);
double V; // 被抓可能性安全值
int n;
while(t--)
{
scanf("%lf %d",&V,&n);
int value_sum = 0;
for(int i = 0;i < n;i++)
{
scanf("%d %lf",&value[i],&p[i]);
value_sum += value[i];
}
if ((V - 0) < eps)
{
cout<<0<<endl;
continue;
} memset(dp,0,sizeof(dp));
dp[0] = 1;
for(int i = 0;i < n;i++)
for(int j = value_sum;j >= value[i];j--)
{
dp[j] = max(dp[j],dp[j - value[i]] * ( 1 - p[i]));
}
for(int j = value_sum;j >= 0;j--)
{
if(V - (1 - dp[j]) > eps)
{
cout<<j<<endl;
break;
}
}
}
return 0;
}

HDU2955 01背包的更多相关文章

  1. Robberies(HDU2955):01背包+概率转换问题(思维转换)

    Robberies  HDU2955 因为题目涉及求浮点数的计算:则不能从正面使用01背包求解... 为了能够使用01背包!从唯一的整数(抢到的钱下手)... 之后就是概率的问题: 题目只是给出被抓的 ...

  2. 【hdu2955】 Robberies 01背包

    标签:01背包 hdu2955 http://acm.hdu.edu.cn/showproblem.php?pid=2955 题意:盗贼抢银行,给出n个银行,每个银行有一定的资金和抢劫后被抓的概率,在 ...

  3. Robberies(简单的01背包 HDU2955)

    Robberies Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Sub ...

  4. hdu2955 Robberies (01背包)

    转载请注明出处:http://blog.csdn.net/u012860063 题目链接:pid=2955">http://acm.hdu.edu.cn/showproblem.php ...

  5. UVALive 4870 Roller Coaster --01背包

    题意:过山车有n个区域,一个人有两个值F,D,在每个区域有两种选择: 1.睁眼: F += f[i], D += d[i] 2.闭眼: F = F ,     D -= K 问在D小于等于一定限度的时 ...

  6. POJ1112 Team Them Up![二分图染色 补图 01背包]

    Team Them Up! Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 7608   Accepted: 2041   S ...

  7. Codeforces 2016 ACM Amman Collegiate Programming Contest A. Coins(动态规划/01背包变形)

    传送门 Description Hasan and Bahosain want to buy a new video game, they want to share the expenses. Ha ...

  8. 51nod1085(01背包)

    题目链接: http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1085 题意: 中文题诶~ 思路: 01背包模板题. 用dp[ ...

  9. *HDU3339 最短路+01背包

    In Action Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total S ...

随机推荐

  1. UVALive - 3266 (贪心) 田忌赛马

    耳熟能详的故事,田忌赛马,第一行给出田忌的马的速度,第二行是齐王的马的速度,田忌赢一场得200,输一场失去200,平局不得也不失,问最后田忌最多能得多少钱? 都知道在故事里,田忌用下等马对上等马,中等 ...

  2. python爬虫 urllib库基本使用

    以下内容均为python3.6.*代码 学习爬虫,首先有学会使用urllib库,这个库可以方便的使我们解析网页的内容,本篇讲一下它的基本用法 解析网页 #导入urllib from urllib im ...

  3. 1.1 Java 的概述

    [什么是java]:Java是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是有SunMicrosystems公司于1995年5月推出的Java程序设计语言和Java平台(即JavaSE,Jav ...

  4. error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int 错误的解决方法

    一些函数定义中,在VC6中,如果没有显示的指定返回值类型,编译器将其视为默认整型:但是vs2008/vs2010不支持默认整型,解决这个问题不能修改每个没有显示指示返回值类型的函数地方,可以用排除44 ...

  5. ASCII码表以及不同进制间的O(1)转换

    ASCII码表以及不同进制间的O(1)转换          一.ASCII码表 ASCII全称为American Standard Code for Information Interchange, ...

  6. GBDT原理

    样本编号 花萼长度(cm) 花萼宽度(cm) 花瓣长度(cm) 花瓣宽度 花的种类 1 5.1 3.5 1.4 0.2 山鸢尾 2 4.9 3.0 1.4 0.2 山鸢尾 3 7.0 3.2 4.7 ...

  7. IOS初级:SDWebImage

    简单用法 #import "ViewController.h" #import "SDWebImage/UIImageView+WebCache.h" @int ...

  8. On the internet, nobody known you are a dog !

  9. 2018.11.09 洛谷P1110 [ZJOI2007]报表统计(multiset)

    传送门 sb题. 直接用两个multisetmultisetmultiset维护相邻两个数的差值和所有数的前驱后继. 插入一个数的时候更新一下就行了. 代码: #include<bits/std ...

  10. 2018.11.03 NOIP模拟 图(bfs/最短路)

    传送门 显然如果AAA到BBB或者CCC到DDD走的不是最短路一定是有一段路径重合了,于是可以O(n2)bfsO(n^2)bfsO(n2)bfs出两点之间的最短距离然后枚举两个点作为重合的端点来更新答 ...