【BZOJ4008】[HNOI2015]亚瑟王

Description

小 K 不慎被 LL 邪教洗脑了,洗脑程度深到他甚至想要从亚瑟王邪教中脱坑。

他决定,在脱坑之前,最后再来打一盘亚瑟王。既然是最后一战,就一定要打得漂亮。众所周知,亚瑟王是一个看脸的游戏,技能的发动都是看概率的。作为一个非洲人,同时作为一个前 OIer,小 K 自然是希望最大化造成伤害的期望值。但他已经多年没写过代码,连 Spaly都敲不对了,因此,希望你能帮帮小 K,让他感受一下当欧洲人是怎样的体验。
本题中我们将考虑游戏的一个简化版模型。玩家有一套卡牌,共 n张。游戏时,玩家将 n 张卡牌排列成某种顺序,排列后将卡牌按从前往后依次编号为 1 ~  n。本题中,顺序已经确定,即为输入的顺序。每张卡牌都有一个技能。第 i 张卡牌的技能发动概率为 pi,如果成功发动,则会对敌方造成di点伤害。也只有通过发动技能,卡牌才能对敌方造成伤害。基于现实因素以及小K非洲血统的考虑,pi不会为 0,也不会为 1,即 0 < pi < 1。一局游戏一共有 r 轮。在每一轮中,系统将从第一张卡牌开始,按照顺序依次考虑每张卡牌。在一轮中,对于依次考虑的每一张卡牌:
1如果这张卡牌在这一局游戏中已经发动过技能,则
1.1 如果这张卡牌不是最后一张,则跳过之(考虑下一张卡牌);
否则(是最后一张),结束这一轮游戏。
2否则(这张卡牌在这一局游戏中没有发动过技能),设这张卡牌为第 i 张
2.1将其以 pi的概率发动技能。
2.2如果技能发动,则对敌方造成 di点伤害,并结束这一轮。
2.3如果这张卡牌已经是最后一张(即 i 等于n),则结束这一轮;否则,考虑下一张卡牌。
请帮助小 K 求出这一套卡牌在一局游戏中能造成的伤害的期望值。

Input

输入文件的第一行包含一个整数 T,代表测试数据组数。

接下来一共 T 组数据。
每组数据的第一行包含两个用空格分开的整数 n和r,分别代表卡牌的张数和游戏的轮数。
接下来 n行,每行包含一个实数和一个整数,由空格隔开,描述一张卡牌。第i 行的两个数为 pi和 di,分别代表第 i 张卡牌技能发动的概率(实数)和技能发动造成的伤害(整数)。保证 pi最多包含 4位小数,且为一个合法的概率。

Output

对于每组数据,输出一行,包含一个实数,为这套卡牌在这一局游戏中造成的伤害的期望值。对于每一行输出,只有当你的输出和标准答案的相对误差不超过10^-8时——即|a-o|/a<=10-8时(其中a是标准答案,o是输出),你的输出才会被判为正确。建议输出10 位小数。

Sample Input

1
3 2
0.5000 2
0.3000 3
0.9000 1

Sample Output

3.2660250000

HINT

一共有 13 种可能的情况:

1.  第一轮中,第 1张卡牌发动技能;第二轮中,第 2张卡牌发动技能;概率为 0.15,伤害为5。
2.  第一轮中,第 1张卡牌发动技能;第二轮中,第 3张卡牌发动技能;概率为 0.315,伤害为3。
3.  第一轮中,第 1张卡牌发动技能;第二轮不发动技能;概率为 0.035,伤害为2。
4.  第一轮中,第 2张卡牌发动技能;第二轮中,第 1张卡牌发动技能;概率为 0.075,伤害为5。
5.  第一轮中,第 2张卡牌发动技能;第二轮中,第 3张卡牌发动技能;概率为 0.0675,伤害为4。
6.  第一轮中,第 2张卡牌发动技能;第二轮不发动技能;概率为 0.0075,伤害为3。
7.  第一轮中,第 3张卡牌发动技能;第二轮中,第 1张卡牌发动技能;概率为 0.1575,伤害为3。
8.  第一轮中,第 3张卡牌发动技能;第二轮中,第 2张卡牌发动技能;概率为 0.04725,伤害为4。
9.  第一轮中,第 3张卡牌发动技能;第二轮不发动技能;概率为 0.11025,伤害为1。
10.  第一轮不发动技能;第二轮中,第 1张卡牌发动技能;概率为 0.0175,伤害为2。
11.  第一轮不发动技能;第二轮中,第 2张卡牌发动技能;概率为 0.00525,伤害为3。
12.  第一轮不发动技能;第二轮中,第 3张卡牌发动技能;概率为 0.011025,伤害为1。
13.  第一轮不发动技能;第二轮亦不发动技能;概率为 0.001225,伤害为0。
造成伤害的期望值为概率与对应伤害乘积之和,为 3.266025。
对于所有测试数据, 1 <= T <= 444, 1 <= n <= 220, 0 <= r <= 132, 0 < pi < 1, 0 <= di <= 1000。
除非备注中有特殊说明,数据中 pi与di均为随机生成。
请注意可能存在的实数精度问题,并采取适当措施。
题解:用f[i][j]表示在第i张牌后,还要进行j轮的概率,那么在剩下的j轮内,第i+1张牌可能出也可能不出,就有
f[i+1][j]=f[i][j]*(1-p[i+1])^j
f[i+1][j-1]=f[i][j]*(1-(1-p[i+1])^j)
每次更新答案
#include <cstdio>
#include <cstring>
#include <iostream>
using namespace std;
int n,r;
double f[230][140],p[230],d[230],ans,pj;
void work()
{
scanf("%d%d",&n,&r);
memset(f,0,sizeof(f));
int i,j;
for(i=1;i<=n;i++) scanf("%lf%lf",&p[i],&d[i]);
f[0][r]=1;
ans=0;
for(i=0;i<n;i++)
{
pj=1;
for(j=0;j<=r;j++)
{
f[i+1][j]+=f[i][j]*pj;
if(j>0) f[i+1][j-1]+=f[i][j]*(1-pj);
ans+=f[i][j]*(1-pj)*d[i+1];
pj*=1-p[i+1];
}
}
printf("%.10lf\n",ans);
}
int main()
{
int t;
scanf("%d",&t);
while(t--) work();
return 0;
}

【BZOJ4008】[HNOI2015]亚瑟王 期望的更多相关文章

  1. BZOJ4008: [HNOI2015]亚瑟王(期望dp)

    Time Limit: 20 Sec  Memory Limit: 512 MBSec  Special JudgeSubmit: 1952  Solved: 1159[Submit][Status] ...

  2. BZOJ4008. [HNOI2015]亚瑟王 期望概率dp

    看到这道题想什么? 一个好转移的状态由于T最多444所以把每个点控制在O(400000)以内,所以对于n和r最多乘一次因此猜f[n][r],f[r][n],首先一轮一轮的搞不好转移,那么先想一想f[n ...

  3. 概率DP——BZOJ4008 [HNOI2015]亚瑟王

    [HNOI2015]亚瑟王 Description 小 K 不慎被 LL 邪教洗脑了,洗脑程度深到他甚至想要从亚瑟王邪教中脱坑.他决定,在脱坑之前,最后再来打一盘亚瑟王.既然是最后一战,就一定要打得漂 ...

  4. BZOJ4008:[HNOI2015]亚瑟王(DP,概率期望)

    Description 小 K 不慎被 LL 邪教洗脑了,洗脑程度深到他甚至想要从亚瑟王邪教中脱坑. 他决定,在脱坑之前,最后再来打一盘亚瑟王.既然是最后一战,就一定要打得漂亮.众所周知,亚瑟王是一个 ...

  5. Bzoj4008 [HNOI2015]亚瑟王

    Time Limit: 20 Sec  Memory Limit: 512 MBSec  Special Judge Submit: 1009  Solved: 605[Submit][Status] ...

  6. P3239 [HNOI2015]亚瑟王 期望dp

    这个题一看就是期望dp,但是我有个问题,一个事件的期望等于他所有事件可能行乘权值的和吗...为什么我有天考试的时候就不对呢...求大佬解释一下. 至于这道题,f[i][j]代表前i个有j个发动技能,这 ...

  7. P3239 [HNOI2015]亚瑟王 期望 dp

    LINK:亚瑟王 Saber!Excalibur! 比较难的期望dp. 可以发现如果暴力枚举所有的局面复杂度很高 . 转换的思路则是 期望的线性性. 求出每张牌的期望累加即可. 考虑每张牌的期望=这张 ...

  8. BZOJ4008 : [HNOI2015]亚瑟王(期望dp)

    题意 略(看了20min才看懂...) 题解 我一开始天真地一轮轮推期望,发现根本不好算... 唉~ 不会做就只能抄题解咯 看了一波DOFY大佬的解法qwq 发现有句神奇的话 记住,期望要倒着推... ...

  9. bzoj4008: [HNOI2015]亚瑟王【期望dp】

    一个特别神奇的dp,特别厉害. f(i, j) 表示 有 j 轮发动技能的牌在 [1, i] 另外的m - j轮在[i + 1, n]之间的概率. 怎么转移呢? 首先考虑i这张牌不选的情况,f(i - ...

随机推荐

  1. 使用n2n在没有公网IP条件下访问树莓派

    实现:在树莓派2和客户机都没有公网IP条件下实现远程访问控制 不足:暂时没实现网页代理 因为校园网环境没有公网IP,无法直接访问树莓派.之前有想过SSH反向代理:使用VPN,ddns(花生壳.no-i ...

  2. URL Schemes

    APP 被唤醒离不开对URL Schemes的认知. 苹果选择沙盒来保障用户的隐私和安全,但沙盒也阻碍了应用间合理的信息共享,于是有了 URL Schemes 这个解决办法. URL Schemes ...

  3. AutofacContainer

    /// <summary> /// Autofac容器 /// </summary> public class AutofacContainer { public static ...

  4. english

    I will keep you posted. :我会随时通知您. wow! :(表示极大的惊奇或钦佩)哇,呀 np :no problem Thanks in advance! :先行感谢 take ...

  5. kxbdSuperMarquee.js滚动的神器-推荐

    http://code.ciaoca.com/jquery/kxbdmarquee/ 版本:jQuery v1.3.2+ 查看 Demo 下载 jQuery kxbdMarquee 文档目录 使用方法 ...

  6. dex文件格式二

    一. dex文件头 (1) magic value 在DexFile.c   dexFileParse函数中 会先检查magic opt 啥是magic opt呢? 我们刚刚从cache目录拷贝出来的 ...

  7. [k]优雅的css

    1.图片文字列表 (2016-01-25) 1.1 实现效果图如下: 1.2 代码: html:( 代码十分优雅哦! ) <ul> <li class="step1&quo ...

  8. How to install OpenBazaar Server in CentOS7

    helps from: https://github.com/OpenBazaar/OpenBazaar-Server http://stackoverflow.com/questions/24917 ...

  9. java11

    1:对象数组(掌握) (1)数组既可以存储基本数据类型,也可以存储引用类型.它存储引用类型的时候的数组就叫对象数组. (2)案例: 用数组存储5个学生对象,并遍历数组. 2:集合(Collection ...

  10. ASM:《X86汇编语言-从实模式到保护模式》越计卷:实模式下对DMA和Sound Blaster声卡的控制

    说实话越计卷作者用了16页(我还是删过的),来讲怎么控制声卡,其实真正归纳起来就那么几点. ★PART1:直接存储访问 1. 总线控制设备(bus master) 在硬件技术不发达的早期,处理器是最重 ...