hdu 2599 Robberies

原创 2017年01月03日 23:28:49

这道题目我也是无语了,自己跟智障一样。非常明显的01背包题目,但是要注意的是这个概率是相乘出来得到的逃脱概率而不是直接相加的,同时最后要注意精度,我也是看了眼界,就是因为这个WA3次。

题目链接:https://vjudge.net/problem/HDU-2955

#include <cstdio>
#include <cstring>
#include <iostream>

using namespace std;

const int inf = 0x3f3f3f3f;
const int maxn = 105;
double sum;
int cntn , s;
double dp[10005];

struct Bank {
	double risk;
	int money;
	Bank (double a=0 , int b=0) : risk(a),money(b) {}
}bank[maxn];

void solve () {
	for (int i = 1 ; i <= s ; i++)
		dp[i] = -1000000;
	dp[0] = 1;
	for (int i = 1 ; i <= cntn ; i++) {
		for (int j = s ; j >= bank[i].money ; j--)
			dp[j] = max(dp[j] , dp[j-bank[i].money]*bank[i].risk);
	} 
	for (int i = s ; i >= 0 ; i--)
		if (dp[i] - (1-sum) > 0.000000001) {
			printf("%d\n", i);
			break;
		}
}

int main () {
	int ncase;
	scanf("%d" , &ncase);
	while (ncase--) {
		memset(bank, 0, sizeof(bank));
		s = 0;
		scanf("%lf %d" , &sum , &cntn);
		for (int i = 1 ; i <= cntn ; i++) {
			double risk;
			int money;
			scanf("%d %lf" , &money , &risk);
			bank[i] = Bank(1-risk , money);
			s += money;
		}
		solve();
	}
}


版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

HDU 2955Robberies

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

【DP|01背包】HDU-2955 Robberies

给出几家银行拥有的钱数、抢走该银行的所有钱被抓的概率和能够容忍的最大被抓概率,求在被抓概率在容忍线以下时能够抢劫的最大钱数。...

HDU2955 Robberies

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

hdu2955 Robberies(01背包)题解

传送门 The aspiring Roy the Robber has seen a lot of American movies, and knows that the bad guy...

HDU 2955 Robberies (01背包)

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

HDU 2955 Robberies(变形背包)

The aspiring Roy the Robber has seen a lot of American movies, and knows that the bad guys usually g...

Hdu 2955 Robberies//01背包

题目描述:Roy去抢银行,如何在不被抓住的情况下抢到最多的钱。给出抢每个银行能抢到的钱和被抓到的概率。 分析:刚开始以为概率只有两位小数,乘以100直接做的,结果发现数据不是这样的,果断wa了。然后...
  • mr_zys
  • mr_zys
  • 2013年06月04日 18:53
  • 407

[HDU2955]Robberies[dp]

题目链接:[HDU2955]Robberies[dp] 题意分析:Roy要去偷银行的钱,每个银行都存在被抓住的概率。他麻麻担心他被抓,所以如果他抢劫的银行被抓住的概率大于P,她麻麻就不放心了。所以,...

HDU Robberies 2955 dp

Robberies Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Tota...
  • LZK1997
  • LZK1997
  • 2017年05月02日 14:29
  • 177

hdu2955 Robberies

Robberies 题目注意的是,概率的精度问题,不是只有两位小数。。有很多位,所以要转换思路。 我也是看了网上的解题报告后,懂的。 不同之处: 一般的理解,背包容量应为概率1。转化思路,背包...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:hdu 2599 Robberies
举报原因:
原因补充:

(最多只允许输入30个字)