HDOJ-2955 Robberies
来源:互联网 发布:bcm20702a0 mac 编辑:程序博客网 时间:2024/05/18 07:16
这道题是01背包问题的变形。01背包问题中dp(i)中的i表示体积,而这道题中i按理说应该表示概率,又因为概率是浮点数不能表示,所以这里的i表示钱。还有我把被抓概率转化为逃跑成功概率便于计算。
状态转移方程:dp(i) = max(dp(i), dp(i - bank[j].money) * bank(j).pos);
#include <iostream>#include <cstdio>#include <algorithm>#include <cstring>#include <vector>using namespace std;#define eps 1e-8struct Bank{ int money; double pos;}bank[105];double dp[10005];int main(){ // freopen("in.txt", "r", stdin); int t; cin >> t; while(t--) { double s; int n, sum = 0; cin >> s >> n; s = 1 - s; for(int i = 0; i < n; i++) { cin >> bank[i].money >> bank[i].pos; bank[i].pos = 1 - bank[i].pos; sum += bank[i].money; } memset(dp, 0, sizeof(dp)); dp[0] = 1.0; for(int i = 0; i < n; i++) for(int j = sum; j >= 0; j--) { double m = dp[j - bank[i].money]; if(m > 0) dp[j] = max(dp[j], m * bank[i].pos); if(dp[j] - s < eps) dp[j] = 0.0; } for(int j = sum; j >= 0; j--) { if(dp[j] > 0) { cout << j << endl; break; } } } return 0;}
0 0
- HDOJ 2955 Robberies
- hdoj 2955 Robberies
- HDOJ--2955--Robberies
- HDOJ-2955 Robberies
- hdoj 2955Robberies<背包>
- hdoj-【2955 Robberies】
- HDOJ 2955 Robberies (01背包)
- HDOJ 2955 Robberies (01背包)
- hdoj 2955 Robberies 【01背包】
- HDOJ Robberies
- HDOJ 2955Robberies(0 1 背包)
- HDOJ 2955 Robberies (0/1背包)
- hdoj problem 2955 Robberies(01背包问题)
- hdoj 2955 Robberies【01背包】【dp】
- hdoj 2955 Robberies 【0 1背包】
- HDOJ 2955 Robberies 【0 1背包】
- hdoj 2955 Robberies 【dp&&01背包】
- hdoj--2955--Robberies(背包好题)
- js里面的原型和原型链
- 构架对项目复杂度的影响
- 第三方--极光推送
- Python 中的全局变量
- 推荐9本无码好书
- HDOJ-2955 Robberies
- C语言struct和union构建ARGB颜色通道
- 1100. Mars Numbers (20)
- Java Reflection(一):Java反射指南
- 理解JS里面的“构造函数”
- 盘点国内软件工程师不常用的热门iOS第三方库:看完,还敢自称”精通iOS开发”吗?
- 薪酬浅析Android开发者比iOS开发者工资低吗
- jQuery.on() 函数详解
- 什么是GP、LP、VC、PE、FOF?