LightOJ 1079 Just another Robbery
http://lightoj.com/volume_showproblem.php?problem=1079
这道题搞了挺久的。。。菜哭,本来想直接贪心用性价比最高的,结果过不了样例。。。
重新看了下,发现mi<100,那么最大获得钱数就是1e4,好像可以用个背包,下标是钱数,f[i][j]表示前i个银行获得j个钱所能得到的最小被抓可能性,还要搞个bool数组表示这个钱数是否可获得。最后就找到<P的最大钱数就行了。
T=100,所以总复杂度应该是1e8,感觉海星
其实好像可以优化成一维的。。但是我懒得思考了。。。
#include<bits/stdc++.h>
#define maxl 110
#define eps 1e-8
using namespace std;int n,ans,cas,mx;
double P;
struct bank
{int val;double p;
}a[maxl];
double f[maxl][maxl*maxl],tmp[maxl][maxl*maxl];
bool in[maxl][maxl*maxl];inline void prework()
{scanf("%lf%d",&P,&n);mx=0;for(int i=1;i<=n;i++)scanf("%d%lf",&a[i].val,&a[i].p),mx+=a[i].val;
}inline void mainwork()
{for(int i=0;i<=n;i++)for(int j=0;j<=mx;j++)in[i][j]=false,f[i][j]=0,tmp[i][j]=0;in[0][0]=true;tmp[0][0]=1;double nxt;for(int i=1;i<=n;i++)for(int j=mx;j>=0;j--){if(in[i-1][j]){in[i][j]=true;f[i][j]=f[i-1][j];tmp[i][j]=tmp[i-1][j];}if(j-a[i].val<0) continue;if(in[i-1][j-a[i].val]){nxt=f[i-1][j-a[i].val]+tmp[i-1][j-a[i].val]*a[i].p;if(nxt>P-eps) continue; if(!in[i][j]){in[i][j]=true;f[i][j]=nxt;tmp[i][j]=tmp[i-1][j-a[i].val]*(1-a[i].p);}else if(nxt<f[i][j]) {f[i][j]=nxt;tmp[i][j]=tmp[i-1][j-a[i].val]*(1-a[i].p);}}}for(int i=mx;i>=0;i--)if(f[n][i]<P-eps && in[n][i]){ans=i;break;}
}inline void print()
{++cas;printf("Case %d: %d\n",cas,ans);
}int main()
{int t;scanf("%d",&t);for(int i=1;i<=t;i++){prework();mainwork();print();}return 0;
}
LightOJ 1079 Just another Robbery相关推荐
- LightOJ 1079 Just another Robbery
题目:LightOJ 1079 Just another Robbery 这个题挺有意思的,虽然也算得上是水吧-- 01背包是模板,但是这是一个涉及概率的问题,概率这个部分要学习一下. 下面的代码求的 ...
- LightOJ - 1079 Just another Robbery —— 概率、背包
题目链接:https://vjudge.net/problem/LightOJ-1079 1079 - Just another Robbery PDF (English) Statistic ...
- LightOJ 1079 Just another Robbery【概率DP】
题目: As Harry Potter series is over, Harry has no job. Since he wants to make quick money, (he wants ...
- LightOJ 1079 Just another Robbery (概率dp+背包)
题意:有n家银行,每家银行都有一定数量的钱和被抓概率,给出自己被抓概率的上限,求能获得最多的钱. 题解:概率dp+背包 用dp[]dp[]dp[]表示获得这么多钱被抓的概率.获得同等钱的概率要尽可能小 ...
- Just another Robbery LightOJ - 1079[背包形状的概率dp]
题目大意:就是你有nnn个目标银行,某个银行iii你会抢到mim_imi元但是同时你有pip_ipi的概率会被警察抓住,现在题目给你一个ppp问你在被抓的概率不超过ppp的情况下最大的抢到钱数是多 ...
- 【LightOJ - 1079】Just another Robbery(概率dp,概率背包)
题干: As Harry Potter series is over, Harry has no job. Since he wants to make quick money, (he wants ...
- kuangbin带你飞专题合集
题目列表 [kuangbin带你飞]专题一 简单搜索 [kuangbin带你飞]专题二 搜索进阶 [kuangbin带你飞]专题三 Dancing Links [kuangbin带你飞]专题四 最短路 ...
- 算法学习经典例题整理
陆续会对本篇博客进行更新! 搜索:https://vjudge.net/contest/292597 区间DP:https://vjudge.net/contest/293892 树状背包:https ...
- kuangbin带你飞 专题1-23 题单
kuangbin大神,对于打过ACM比赛的ACMer,无人不知无人不晓. 在此,附上vjudge平台上一位大神整理的[kuangbin带你飞]专题目录链接. [kuangbin带你飞专题目录1-23] ...
最新文章
- Eclipse下新建Maven项目、自动打依赖jar包
- c标签 if else
- img文件解包工具_使用tar归档命令,就不怕文件多!
- 错误记录​:使用CLLocationManager不走代理方法
- Java提取mssql备份文件的数据
- 如何用matlab消除谐波,如何在含有整次谐波和非整次谐波的信号中去除整次谐波?...
- 的优缺点_浅谈桉木家具的优缺点
- SignalR--Web客户端
- 在Eclipse中使用CVS的实践建议
- * poj 3159 Candies 最短路 dijkstra堆优化
- 继安卓市场下架后 探探App也在苹果商店下架
- 原生php ajax post_php下的原生ajax请求用法实例分析
- Matlab颜色RGB值
- xp系统打开计算机硬盘分区,详解WindowsXP硬盘分区步骤
- 利用SHA-1算法和RSA秘钥进行签名验签(带注释)
- 使用BeautifulSoup爬取想要的标签(《python网络爬虫权威指南》笔记)
- 「Python入门」Python代码规范(风格)
- js 数组操作的push pop shift unshift 等方法
- 如何高效设计游戏——增强游戏体验游戏背景音乐无缝循环
- SPEC CPU简介和使用
热门文章
- 传感器精度和分辨率的区别
- 移民加拿大,你们后悔了么?
- 抖音取名,抖音打造人设(取名,头像,简介...):国仁楠哥
- Android彩信数据库分析
- 信息安全概论(第3版)课后习题答案 牛少彰 崔宝江 李剑编著
- 漫画:如何打赢冗杂多变的“内容攻防战”
- 云函数支付以及支付回调
- Arya and Bran Game of the Rows Multiple Clocks
- NVIDIA DLI——深度学习基础-理论与实践入门
- Google Authenticator windows client 谷歌身份验证器 windows 电脑端