hdu2955
来源:互联网 发布:根据域名添加路由设置 编辑:程序博客网 时间:2024/06/15 10:02
给定一个被抓的概率p,还有一些银行,给定这些银行的钱数以及抢劫这些银行被抓的概率。
求在被抓的概率不大于p的情况下最多可以抢到多少钱。
01背包。
dp:
dp[i]表示抢劫i元逃跑的概率,则dp[i] = max(, dp[i], dp[i - v[j]] * (1 - w[i]));
抢劫多个银行逃跑的概率等于抢劫每个银行逃跑概率之积。
#include <iostream>#include <cmath>#include <algorithm>#include <string>#include <deque>#include <cstring>#include <cstdio>#include <vector>#include <set>#include <map>#include <queue>#include <cstdlib>#include <iomanip>using namespace std;#define rep(i, a, b) for( i = (a); i <= (b); i++)#define reps(i, a, b) for( i = (a); i < (b); i++)#define pb push_back#define ps push#define mp make_pair#define CLR(x,t) memset(x,t,sizeof x)#define LEN(X) strlen(X)#define F first#define S second#define Debug(x) cout<<#x<<"="<<x<<endl;const double euler_r = 0.57721566490153286060651209;const double pi = 3.141592653589793238462643383279;const double E = 2.7182818284590452353602874713526;const int inf=~0U>>1;const int MOD = int(1e9) + 7;const double EPS=1e-6;typedef long long LL;int t, n, i, j, ans, v[105], sum;double w[105], p, f[10005];int main(){ cin >> t; while(t--) { cin >> p >> n; sum = 0; rep(i, 1, n) { cin >> v[i] >> w[i]; sum += v[i];} //CLR(f, -1); rep(i, 1, 10004) f[i] = -1; f[0] = 1;//抢钱的逃跑的概率 rep(i, 1, n) { for(j = sum; j >= v[i]; j--) { f[j] = max(f[j], f[j - v[i]] * (1 - w[i])); } } for(j = sum; j >= 0; j--) if(f[j] >= 1 - p) { ans = j; break; } cout << ans << endl; } return 0;}
0 0
- hdu2955
- HDU2955
- HDU2955
- hdu2955
- hdu2955
- hdu2955
- HDU2955
- HDU2955
- HDU2955
- hdu2955
- HDU2955
- hdu2955
- HDU2955 Robberies
- hdu2955-Robberies
- hdu2955 Robberies
- HDU2955 Robberies
- hdu2955 Robberies
- HDU2955-Robberies
- MATLAB 并行工具箱
- Python 处理遥感图像:光谱辐射定标、大气校正和计算反射率
- C++中的友元函数和友元类
- [数位dp] spoj 10738 Ra-One Numbers
- ExtAspNet从DataTable里导出Excel
- hdu2955
- Triangle
- jQuery判断元素是否显示和存在
- Valid Parentheses
- 20140527-在jQuery中设置文本框回车事件
- 编写可维护的JavaScript之事件处理
- 2.Nginx的进程结构、基本配置等
- 4 Nginx的Location区段的功能和配置使用
- C# Javascript引擎,如何在C#中执行现有的Javacript代码?