HDU2955Robberies(DP)
http://acm.hdu.edu.cn/showproblem.php?pid=2955
题目是说一小偷偷东西,第i个物品的价值是M[i],被抓的概率是p[i],现在要使得在被抓的概率在P以下时的所能偷得的最大价值。
不同于以往的01背包,这里需要将价值作为物品的大小。同时如果偷A被抓的概率是Pa,偷B被抓的概率是Pb那么偷两个物品被抓的概率就是
1-(1-Pa)*(1-Pb)
这时令DP[i][j]代表对于前i个物品偷得的价值为j时的最小的被抓的概率,这时可以得到状态转移方程:
DP[i][j] = MIN( DP[i-1][j], 1-(1-DP[i-1][j-M[i]])*(1-p[i]) )
最后的结果就是对于所有的DP[N][i]<P的最大的j
同样可以将状态压缩到一维的空间,注意边界(最初时):
DP[i] = 1;一旦偷东西就会被抓
DP[0] = 0;什么都没偷一定不会被抓
#include <map>
#include <set>
#include <stack>
#include <queue>
#include <cmath>
#include <ctime>
#include <vector>
#include <cstdio>
#include <cctype>
#include <cstring>
#include <cstdlib>
#include <iostream>
#include <algorithm>
using namespace std;
#define INF 0x3f3f3f3f
#define inf (-((LL)1<<40))
#define lson k<<1, L, mid
#define rson k<<1|1, mid+1, R
#define mem0(a) memset(a,0,sizeof(a))
#define mem1(a) memset(a,-1,sizeof(a))
#define mem(a, b) memset(a, b, sizeof(a))
#define FOPENIN(IN) freopen(IN, "r", stdin)
#define FOPENOUT(OUT) freopen(OUT, "w", stdout) template<class T> T CMP_MIN(T a, T b) { return a < b; }
template<class T> T CMP_MAX(T a, T b) { return a > b; }
template<class T> T MAX(T a, T b) { return a > b ? a : b; }
template<class T> T MIN(T a, T b) { return a < b ? a : b; }
template<class T> T GCD(T a, T b) { return b ? GCD(b, a%b) : a; }
template<class T> T LCM(T a, T b) { return a / GCD(a,b) * b; } //typedef __int64 LL;
//typedef long long LL;
const int MAXN = +;
const int MAXM = ;
const double eps = 1e-; double DP[], w[], P;
int c[], N; int main()
{
int T;
while(~scanf("%d%*c", &T)) while(T--)
{
mem1(DP);
scanf("%lf%d", &P, &N);
int S = ;
for(int i=;i<N;i++)
{
scanf("%d %lf", &c[i], &w[i]);
S += c[i];
}
for(int i=S;i>=;i--) DP[i] = ;
DP[] = ;
for(int i=;i<N;i++)
{
for(int j=S;j>=c[i];j--)
{
DP[j] = MIN(DP[j], 1.0-(-DP[j-c[i]])*(-w[i]));
}
}
int ans = ;
for(int i=;i<=S;i++) if(DP[i] <= P) ans = i;
printf("%d\n", ans);
}
return ;
}
HDU2955Robberies(DP)的更多相关文章
- LightOJ 1033 Generating Palindromes(dp)
LightOJ 1033 Generating Palindromes(dp) 题目链接:http://acm.hust.edu.cn/vjudge/contest/view.action?cid= ...
- lightOJ 1047 Neighbor House (DP)
lightOJ 1047 Neighbor House (DP) 题目链接:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=87730# ...
- UVA11125 - Arrange Some Marbles(dp)
UVA11125 - Arrange Some Marbles(dp) option=com_onlinejudge&Itemid=8&category=24&page=sho ...
- 【POJ 3071】 Football(DP)
[POJ 3071] Football(DP) Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 4350 Accepted ...
- 初探动态规划(DP)
学习qzz的命名,来写一篇关于动态规划(dp)的入门博客. 动态规划应该算是一个入门oier的坑,动态规划的抽象即神奇之处,让很多萌新 萌比. 写这篇博客的目标,就是想要用一些容易理解的方式,讲解入门 ...
- Tour(dp)
Tour(dp) 给定平面上n(n<=1000)个点的坐标(按照x递增的顺序),各点x坐标不同,且均为正整数.请设计一条路线,从最左边的点出发,走到最右边的点后再返回,要求除了最左点和最右点之外 ...
- 2017百度之星资格赛 1003:度度熊与邪恶大魔王(DP)
.navbar-nav > li.active > a { background-image: none; background-color: #058; } .navbar-invers ...
- Leetcode之动态规划(DP)专题-详解983. 最低票价(Minimum Cost For Tickets)
Leetcode之动态规划(DP)专题-983. 最低票价(Minimum Cost For Tickets) 在一个火车旅行很受欢迎的国度,你提前一年计划了一些火车旅行.在接下来的一年里,你要旅行的 ...
- 最长公共子序列长度(dp)
/// 求两个字符串的最大公共子序列长度,最长公共子序列则并不要求连续,但要求前后顺序(dp) #include <bits/stdc++.h> using namespace std; ...
随机推荐
- 51nod1406 与查询
这题卡I/O...dp一下... #include<cstdio> #include<cstring> #include<cctype> #include<a ...
- 51nod1188 最大公约数之和 V2
考虑每一个数对于答案的贡献.复杂度是O(nlogn)的.因为1/1+1/2+1/3+1/4......是logn级别的 //gcd(i,j)=2=>gcd(i/2,j/2)=1=>phi( ...
- 配置域名服务器报错named[822]: dns_rdata_fromtext /etc/bind/db.asertest.com mail not a valid number
问题描述: 为了配置邮件服务器,更改了相关域名,改完后,重启bind9报错 Mar 17 14:39:39 DnsServer2 named[822]: dns_rdata_fromtext: /et ...
- matlab中meshgrid函数的用法
meshgrid用于从数组a和b产生网格.生成的网格矩阵A和B大小是相同的.它也可以是更高维的.这里的大小指的是,size()函数的大小,size()函数返回的是一个向量, 那么size(A) = s ...
- 【英语】Bingo口语笔记(1) - Hold
how are you holding up? 你还撑得住吧?你还好吧?撑住太不容易了吧!
- MySQL与Oracle 差异比较之一数据类型
数据类型 编号 ORACLE MYSQL 注释 1 NUMBER int / DECIMAL DECIMAL就是NUMBER(10,2)这样的结构INT就是是NUMBER(10),表示整型:MYSQL ...
- 常用的Oracle数据库语句 (待更新完毕)
一.常用的查询语句 1.1 常用查询 查表中有多少个字段 select count(*) from user_tab_columns where table_name=upper('表名') 或者 s ...
- 关于COUNT STOPKEY的工作机制(转载)
SQL> select rownum rn ,a.* from cnmir.ew_auctions a where rownum<50000; Execution Plan-------- ...
- python27+django调用数据库
我用的mysql版,先上无模板的版本,在views里加上 import MySQLdb 然后在下方写函数 def use_databases(request): db = MySQLdb.connec ...
- Autodesk Stingray 游戏引擎
Autodesk的游戏引擎质量够高的. http://v.youku.com/v_show/id_XMTMwMjc0MDIwMA==.html?qq-pf-to=pcqq.group http://v ...