看着洛谷里那一排任务计划,瑟瑟发抖。。。。。。

题目大意:

你有n张牌,每一张牌有一个发动的概率和造成的伤害值,游戏一共有r轮。对于每一轮游戏,你只能发动一张牌(在之前回合发动过的牌会被跳过,不予考虑),在发动一张牌后这轮游戏结束,进入下一轮。让你求出r轮游戏后,这套牌造成伤害的希望。

输入:t组数据,n张牌,r轮游戏,每张牌在每轮发动的概率p[i],该牌造成的伤害d[i]。

输出:期望伤害值。

思路分析:

注意到期望具有线性性,所以我们可以通过求出每张牌在总共r轮游戏中会发动的概率(g[i]),然后再乘上它的伤害(d[i]),相加,就能得到答案。

即:E=∑ni=1 g[i]*d[i]

那么我们应该如何求出g数组呢?

首先我们可以轻而易举地求出g[1]——g[1]=1-(1-p[1])r,其中(1-p[1])r 就是指第1张牌在r个回合中至始至终都不发动的概率。

那么g[2]怎么求呢?

注意到g[2]发动有2种情况:

1、第一张牌始终不发动,第二张牌发动。那么此时有r个回合考虑到了第二张牌。

2、第一张牌发动,第二张牌也发动。那么此时有r-1个回合考虑到了第二张牌。

所以:p[2]=(1-p[1])r*[1-(1-p[2])r]+[1-(1-p[1])r]*[1-(1-p[2])r-1]

发现了什么?

貌似第i张牌发动的概率,只和前i-1牌的发动情况有关,如果前i-1张牌中有j张牌发动过了,那么第i张牌就被考虑了r-j次,发动的概率就为:(前i-1张牌,有j张发动的概率)*[1-(1-p[i])r-j]。

所以:p[i]=∑rj=0 (前i张牌有j张牌发动的概率)*[1-(1-p[i])r-j]

那么我们就新加一个f数组,f[i,j]就表示前i张牌,有j张牌被发动过的概率。

f[i,j]可以由两个状态转移过来:1、f[i-1,j]       2、f[i-1,j-1]

对于f[i-1,j],它想要转移成f[i,j],说明第i张牌没有被发动。所以f[i,j]=f[i,j]+f[i-1,j]*(1-p[i])r-j

对于f[i-1,j-1],他想要转移成f[i,j],说明第i张牌被发动了。所以f[i,j]=f[i,j]+f[i-1,j-1]*(1-(1-p[i])r-j+1)

代码:

varpp,f:array[0..220,0..132]of double;d:array[1..220]of longint;g,p:array[1..220]of double;ans:double;i,j,t,n,r:longint;
beginread(t);while t>0 dobeginread(n,r);for i:=1 to n doread(p[i],d[i]);for i:=1 to n dobeginpp[i,0]:=1;                                                //pp数组为预处理出的(1-p[i])任意次方数for j:=1 to r dopp[i,j]:=pp[i,j-1]*(1-p[i]);end;f[0,0]:=1;for i:=1 to n dobeginf[i,0]:=f[i-1,0]*pp[i,r];for j:=1 to r dof[i,j]:=f[i-1,j]*pp[i,r-j]+f[i-1,j-1]*(1-pp[i,r-j+1]);end;fillchar(g,sizeof(g),0); g[1]:=1-pp[1,r]; ans:=g[1]*d[1];for i:=2 to n dobeginfor j:=0 to r dog[i]:=g[i]+f[i-1,j]*(1-pp[i,r-j]);ans:=ans+g[i]*d[i];end;writeln(ans:0:10);dec(t);end;
end.

转载于:https://www.cnblogs.com/WR-Eternity/p/9773135.html

HNOI 2015 【亚瑟王】相关推荐

  1. 乖离性暗机器人_《乖离性百万亚瑟王》国服超弩暗机器人平民通关攻略

    乖离性百万亚瑟王国服第一次迎来新的机器人类型BOSS,难度还是比较大的!在打暗机器人的时候有什么需要注意的细节,我们一起来看看吧! 首先介绍一下暗机器人的属性数据: 属性:暗系 接下来介绍一下BOSS ...

  2. SSD成就了《扩散性百万亚瑟王》

    盛大网络最近上线了一款手机游戏<扩散性百万亚瑟王>.游戏推出的当周,盛大的股票上涨了30%.这款一上线就受到广泛欢迎的游戏后端支持平台就采用了英特尔针对数据中心的DC系列S3700和S35 ...

  3. [HNOI2015]亚瑟王

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

  4. 亚瑟王(bzoj 4008)

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

  5. 乖离性暗机器人_乖离性百万亚瑟王国服超弩暗机器人如何打|乖离性百万亚瑟王国服超弩暗机器人平民打法攻略分享_好特教程...

    <乖离性百万亚瑟王>国服近日迎来了新的机器人类型BOSS,难度不小,那么在打暗机器人的时候有什么需要注意的细节呢?下面我们就一起来看看吧. 首先介绍一下暗机器人的属性数据: 属性:暗系 接 ...

  6. [BZOJ4008]亚瑟王

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

  7. 【BZOJ4008】【HNOI2015】亚瑟王 [期望DP]

    亚瑟王 Time Limit: 20 Sec  Memory Limit: 512 MB [Submit][Status][Discuss] Description 小 K 不慎被 LL 邪教洗脑了, ...

  8. BZOJ-4008: [HNOI2015]亚瑟王 (概率期望DP)

    4008: [HNOI2015]亚瑟王 Time Limit: 20 Sec  Memory Limit: 512 MBSec  Special Judge Submit: 1627  Solved: ...

  9. 唐 库利超级计算机,第七卷 乖离性 百万亚瑟王_第二百五十二章 绝望中的希望...

    第七卷 乖离性 百万亚瑟王_第二百五十二章 绝望中的希望 赫布里底训练大厅. "诸位,结果已经分析出来了,丘库林,也就是被你们捉到的闯入者,他身上的神装的确是断绝时代的遗物不错,而且,这件神 ...

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

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

最新文章

  1. Access violation at address 0x77f96c94
  2. 在VMware Workstation中安装Ubuntu设置网络连接
  3. mysql innodb 数据复制_快速将InnoDB表复制到另一个实例
  4. 使用dumpsys检测Activity任务栈
  5. js等待当前线程内ajax完成,理解javascript定时器中的单线程
  6. maya材质sheen_maya怎样做耐磨金属质感?
  7. hexo博客添加暗色模式_我如何将暗模式添加到我的网站
  8. 动态规划——物品无限的背包问题
  9. golang 解决 TCP 粘包问题
  10. 信息发布系统 Jquery+MVC架构开发(6)BLL层提供WCF 服务 .
  11. 【辨异】relation, relationship
  12. 粗浅看 Tomcat系统架构分析
  13. 金山打字通五笔介绍及讲解
  14. 平面排版时,教你突出中文美感的几种方法
  15. landesk 卸载_landesk怎么卸载,软件卸载不了怎么办
  16. java实现思维导图_Java并发(思维导图)
  17. swifty项目中pod的使用
  18. android 反编译 .smali,Android_反编译_smali语法
  19. Java获取汉字的拼音
  20. 策略模式、观察者模式、状态模式原理及实例

热门文章

  1. 《PaddlePaddle从入门到炼丹》十一——自定义图像数据集识别
  2. SPEC CPU2006测试
  3. 信息搜集快捷导航工具bug修复-光速启动
  4. 以下内容仅对你可见个性签名_微信个性签名以下内容仅对你可见模板
  5. RHCE 考试经验总结
  6. WeTest全球化服务,为使命召唤手游质量保驾护航
  7. LeetCode452用最少的箭射爆气球
  8. [ITIL学习笔记]ITIL认证相关
  9. 听说,年终总结写不好,绩效要被打 C
  10. Linux root密码重置