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相关推荐

  1. LightOJ 1079 Just another Robbery

    题目:LightOJ 1079 Just another Robbery 这个题挺有意思的,虽然也算得上是水吧-- 01背包是模板,但是这是一个涉及概率的问题,概率这个部分要学习一下. 下面的代码求的 ...

  2. LightOJ - 1079 Just another Robbery —— 概率、背包

    题目链接:https://vjudge.net/problem/LightOJ-1079 1079 - Just another Robbery     PDF (English) Statistic ...

  3. 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 ...

  4. LightOJ 1079 Just another Robbery (概率dp+背包)

    题意:有n家银行,每家银行都有一定数量的钱和被抓概率,给出自己被抓概率的上限,求能获得最多的钱. 题解:概率dp+背包 用dp[]dp[]dp[]表示获得这么多钱被抓的概率.获得同等钱的概率要尽可能小 ...

  5. Just another Robbery LightOJ - 1079[背包形状的概率dp]

    题目大意:就是你有nnn个目标银行,某个银行iii你会抢到mim_imi​元但是同时你有pip_ipi​的概率会被警察抓住,现在题目给你一个ppp问你在被抓的概率不超过ppp的情况下最大的抢到钱数是多 ...

  6. 【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 ...

  7. kuangbin带你飞专题合集

    题目列表 [kuangbin带你飞]专题一 简单搜索 [kuangbin带你飞]专题二 搜索进阶 [kuangbin带你飞]专题三 Dancing Links [kuangbin带你飞]专题四 最短路 ...

  8. 算法学习经典例题整理

    陆续会对本篇博客进行更新! 搜索:https://vjudge.net/contest/292597 区间DP:https://vjudge.net/contest/293892 树状背包:https ...

  9. kuangbin带你飞 专题1-23 题单

    kuangbin大神,对于打过ACM比赛的ACMer,无人不知无人不晓. 在此,附上vjudge平台上一位大神整理的[kuangbin带你飞]专题目录链接. [kuangbin带你飞专题目录1-23] ...

最新文章

  1. Eclipse下新建Maven项目、自动打依赖jar包
  2. c标签 if else
  3. img文件解包工具_使用tar归档命令,就不怕文件多!
  4. 错误记录​:使用CLLocationManager不走代理方法
  5. Java提取mssql备份文件的数据
  6. 如何用matlab消除谐波,如何在含有整次谐波和非整次谐波的信号中去除整次谐波?...
  7. 的优缺点_浅谈桉木家具的优缺点
  8. SignalR--Web客户端
  9. 在Eclipse中使用CVS的实践建议
  10. * poj 3159 Candies 最短路 dijkstra堆优化
  11. 继安卓市场下架后 探探App也在苹果商店下架
  12. 原生php ajax post_php下的原生ajax请求用法实例分析
  13. Matlab颜色RGB值
  14. xp系统打开计算机硬盘分区,详解WindowsXP硬盘分区步骤
  15. 利用SHA-1算法和RSA秘钥进行签名验签(带注释)
  16. 使用BeautifulSoup爬取想要的标签(《python网络爬虫权威指南》笔记)
  17. 「Python入门」Python代码规范(风格)
  18. js 数组操作的push pop shift unshift 等方法
  19. 如何高效设计游戏——增强游戏体验游戏背景音乐无缝循环
  20. SPEC CPU简介和使用

热门文章

  1. 传感器精度和分辨率的区别
  2. 移民加拿大,你们后悔了么?
  3. 抖音取名,抖音打造人设(取名,头像,简介...):国仁楠哥
  4. Android彩信数据库分析
  5. 信息安全概论(第3版)课后习题答案 牛少彰 崔宝江 李剑编著
  6. 漫画:如何打赢冗杂多变的“内容攻防战”
  7. 云函数支付以及支付回调
  8. Arya and Bran Game of the Rows Multiple Clocks
  9. NVIDIA DLI——深度学习基础-理论与实践入门
  10. Google Authenticator windows client 谷歌身份验证器 windows 电脑端