【bzoj4008】[HNOI2015]亚瑟王 概率dp
题目描述
$n$ 张牌,$r$ 轮游戏,每轮从左向右操作,遇到第 $i$ 张牌有 $p_i$ 的概率选中,选中会产生 $d_i$ 的贡献,丢弃掉该牌并结束这一轮,否则继续下一张。问最终的期望贡献。
输入
输入文件的第一行包含一个整数 T,代表测试数据组数。
输出
对于每组数据,输出一行,包含一个实数,为这套卡牌在这一局游戏中造成的伤害的期望值。对于每一行输出,只有当你的输出和标准答案的相对误差不超过10^-8时——即|a-o|/a<=10-8时(其中a是标准答案,o是输出),你的输出才会被判为正确。
样例输入
1
3 2
0.5000 2
0.3000 3
0.9000 1
样例输出
3.2660250000
题解
概率dp
这种神题像我这种傻逼大概一辈子也想不出来。。。
考虑将这 $r$ 次操作一起进行,设 $f[i][j]$ 表示前 $i$ 个人,还剩 $j$ 次选择机会的概率。
考虑 $f[i][j]$ 的转移:
如果 $i$ 没有被选择,则 $j$ 次机会都不能选中,$f[i][j]=f[i-1][j]·(1-p[i])^j$ ;
如果 $i$ 有被选择,则 $j+1$ 次机会不能都不选中, $f[i][j]=f[i-1][j+1]·(1-(1-p[i])^{j+1})$ 。
因此总的状态转移方程就是 $f[i][j]=f[i-1][j]·(1-p[i])^j+f[i-1][j+1]·(1-(1-p[i])^{j+1})$ 。
得到所有的 $f$ 之后即可统计答案。对于第 $i$ 张牌,它被选中的概率是 $\sum\limits_{j=0}^mf[i-1][j]·(1-(1-p[i])^j)$ ,再乘上 $d[i]$ 即为贡献。
时间复杂度 $O(Tnr)$
#include <cmath>
#include <cstdio>
double f[230][140] , p[230] , d[230];
int main()
{
int T;
scanf("%d" , &T);
while(T -- )
{
int n , m , i , j;
double ans = 0;
scanf("%d%d" , &n , &m);
for(i = 1 ; i <= n ; i ++ ) scanf("%lf%lf" , &p[i] , &d[i]);
f[0][m] = 1;
for(i = 1 ; i <= n ; i ++ )
for(j = 0 ; j <= m ; j ++ )
f[i][j] = f[i - 1][j] * pow(1 - p[i] , j) + f[i - 1][j + 1] * (1 - pow(1 - p[i] , j + 1));
for(i = 1 ; i <= n ; i ++ )
for(j = 0 ; j <= m ; j ++ )
ans += d[i] * f[i - 1][j] * (1 - pow(1 - p[i] , j));
f[0][m] = 0;
printf("%.10lf\n" , ans);
}
return 0;
}
【bzoj4008】[HNOI2015]亚瑟王 概率dp的更多相关文章
- BZOJ4008: [HNOI2015]亚瑟王(期望dp)
Time Limit: 20 Sec Memory Limit: 512 MBSec Special JudgeSubmit: 1952 Solved: 1159[Submit][Status] ...
- P3239 [HNOI2015]亚瑟王——概率DP
题面:亚瑟王 最近考试考期望很自闭啊,没做过这种类型的题,只能现在练一练: 所谓期望,就是状态乘上自己的概率:对于这道题来说,我们要求的是每张牌的伤害乘上打出的概率的和: 当然不是直接乘,因为给的是每 ...
- 概率DP——BZOJ4008 [HNOI2015]亚瑟王
[HNOI2015]亚瑟王 Description 小 K 不慎被 LL 邪教洗脑了,洗脑程度深到他甚至想要从亚瑟王邪教中脱坑.他决定,在脱坑之前,最后再来打一盘亚瑟王.既然是最后一战,就一定要打得漂 ...
- 【BZOJ-4008】亚瑟王 概率与期望 + DP
4008: [HNOI2015]亚瑟王 Time Limit: 20 Sec Memory Limit: 512 MBSec Special JudgeSubmit: 832 Solved: 5 ...
- BZOJ4008:[HNOI2015]亚瑟王(DP,概率期望)
Description 小 K 不慎被 LL 邪教洗脑了,洗脑程度深到他甚至想要从亚瑟王邪教中脱坑. 他决定,在脱坑之前,最后再来打一盘亚瑟王.既然是最后一战,就一定要打得漂亮.众所周知,亚瑟王是一个 ...
- 2018.10.13 bzoj4008: [HNOI2015]亚瑟王(概率dp)
传送门 马上2点考初赛了,心里有点小紧张. 做道概率dp压压惊吧. 话说这题最开始想错了. 最开始的方法是考虑f[i][j]f[i][j]f[i][j]表示第iii轮出牌为jjj的概率. 然后用第ii ...
- Bzoj4008 [HNOI2015]亚瑟王
Time Limit: 20 Sec Memory Limit: 512 MBSec Special Judge Submit: 1009 Solved: 605[Submit][Status] ...
- P3239 [HNOI2015]亚瑟王 期望dp
这个题一看就是期望dp,但是我有个问题,一个事件的期望等于他所有事件可能行乘权值的和吗...为什么我有天考试的时候就不对呢...求大佬解释一下. 至于这道题,f[i][j]代表前i个有j个发动技能,这 ...
- P3239 [HNOI2015]亚瑟王 期望 dp
LINK:亚瑟王 Saber!Excalibur! 比较难的期望dp. 可以发现如果暴力枚举所有的局面复杂度很高 . 转换的思路则是 期望的线性性. 求出每张牌的期望累加即可. 考虑每张牌的期望=这张 ...
随机推荐
- Java语言简介
Java即计算机编程语言 1.概念 Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承.指针等概念,因此Java语言具有功能强大和简单易用两个特征.Jav ...
- 「赛后补题」Meeting(HDU-5521)
题意 A,B两个人分别在1和n区.每个区有若干点(区之间的点可以重复,各个区内点间的距离一致),给出区之间有联系的图以及到达所需时间.求两个人见面最短时间以及在哪个区碰面(可有多个) 分析 隐式图搜索 ...
- 第五模块:WEB开发基础 第1章·HTML&CSS基础
01-前端介绍 02-HTML介绍 03-HTML文档结构 04-head标签相关内容 05-常用标签一之h1~h6,p,a 06-常用标签一之ul.ol.div.img.span 07-常用标签二- ...
- ISE 14.7安装教程最新版(Win10安装)——解决Win10安装完后打不开快捷方式的方法
ISE 14.7安装教程最新版(Win10安装) Xilinx ISE是一款世界著名的硬件设计软件,它为设计流程的每一步都提供了直观的生产力增强工具,覆盖从系统级设计探索.软件开发和基于HDL硬件设计 ...
- Request对象及常用方法
Object getAttribute(String name) 获得name的属性,若不存在,则返回null Enumeration getAttributeNames() 返回一个枚举类型的包含r ...
- 【outPut_Class 输出类】使用说明
对象:outPut 说明:定义输出结果类的相关操作.此对象的核心是[JSON]类,所以它继承了[JSON]类的所有方法 重要: 输出结果样式为XML时,自带根节点"root".输出 ...
- 【system.number】使用说明
对象:system.number 说明:提供一系列针对数值类型的操作 目录: 方法 返回 说明 system.number.isNumber( number ) [True | False] 检测是否 ...
- 【转】cocos2d工具汇总
位图字体工具Bitmap Font Tools BMFont (Windows)FonteditorGlyph DesignerHieroLabelAtlasCreator 粒子编辑工具Particl ...
- docker学习2
今天继续学习docker! 搜索镜像 docker search centos 下载镜像 docker pull name(镜像名字) 查看镜像docker images 字段含义分析: TAG:仓库 ...
- 已有海外版Office365,如何开通相同Tenant的Azure
下面这个步骤是开通海外版Azure的测试账号,请了解! 翻到如图位置 点击免费开始 下一步 输入验证代码,此页没截图 使用信用卡,需要visa或master 下一步认证完就可以使用,没有继续截图