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

题目大意:

你有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)

代码:

var
pp,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;
begin
read(t);
while t>0 do
begin
read(n,r);
for i:=1 to n do
read(p[i],d[i]);
for i:=1 to n do
begin
pp[i,0]:=1; //pp数组为预处理出的(1-p[i])任意次方数
for j:=1 to r do
pp[i,j]:=pp[i,j-1]*(1-p[i]);
end;
f[0,0]:=1;
for i:=1 to n do
begin
f[i,0]:=f[i-1,0]*pp[i,r];
for j:=1 to r do
f[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 do
begin
for j:=0 to r do
g[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.

HNOI 2015 【亚瑟王】的更多相关文章

  1. [HNOI 2015]亚瑟王

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

  2. bzoj[HNOI2015]亚瑟王 - 递推与动规 - 概率与期望

    [bzoj4008][HNOI2015]亚瑟王 2015年4月22日3,2991 Description 小 K 不慎被 LL 邪教洗脑了,洗脑程度深到他甚至想要从亚瑟王邪教中脱坑. 他决定,在脱坑之 ...

  3. BZOJ 4008 【HNOI2015】 亚瑟王

    题目链接:亚瑟王 这道题好神啊TAT--果然我的dp还是太弱了-- 一开始想了半天的直接dp求期望,结果最后WA的不知所云-- 最后去翻了题解,然后发现先算概率,再求期望--新姿势\(get\). 我 ...

  4. Bzoj4008 [HNOI2015]亚瑟王

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

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

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

  6. 【BZOJ-4008】亚瑟王 概率与期望 + DP

    4008: [HNOI2015]亚瑟王 Time Limit: 20 Sec  Memory Limit: 512 MBSec  Special JudgeSubmit: 832  Solved: 5 ...

  7. 洛谷P1930 亚瑟王的宫殿 Camelot

    P1930 亚瑟王的宫殿 Camelot 19通过 53提交 题目提供者JOHNKRAM 标签USACO 难度提高+/省选- 提交  讨论  题解 最新讨论 暂时没有讨论 题目描述 很久以前,亚瑟王和 ...

  8. BZOJ 4008 亚瑟王

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

  9. BZOJ 4008: [HNOI2015]亚瑟王( dp )

    dp(i, j)表示考虑了前i张牌, 然后还有j轮的概率. 考虑第i+1张牌: 发动的概率 : p = dp(i, j) * (1 - (1-p[i+1])^j) 没发动的概率 : dp(i, j) ...

  10. [BZOJ4008]亚瑟王

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

随机推荐

  1. steam 数据转换

    目录 数组和集合互转 数组转集合 方法一 遍历 方法二 asList 方法三 steam 集合转数组 方法一 循环 方法二 toArray 方法三 steam 小结 string转为Character ...

  2. UVA 11292-Dragon of Loowater (贪心)

    Once upon a time, in the Kingdom of Loowater, a minor nuisance turned into a major problem. The shor ...

  3. 07_Python语法示例(基础语法,文件操作,异常处理)

    1.写程序在终端输出图形 ######## # # # # ######## print("#" * 8) print("#" + " " ...

  4. 剑指 Offer 55 - I. 二叉树的深度

    题目描述 输入一棵二叉树的根节点,求该树的深度.从根节点到叶节点依次经过的节点(含根.叶节点)形成树的一条路径,最长路径的长度为树的深度. 例如: 给定二叉树 [3,9,20,null,null,15 ...

  5. Tomcat9w.exe无法启动为started

    问题: startup.bat可以正常启动,http://localhost:8080/ 可以正常访问.但是Tomcat9w.exe无法启动为started,一直为Stopped. 解决方案: 如下图 ...

  6. myeclipse前端界面乱码

    框起来的值默认的格式是ISO-8859-1,改为UTF-8

  7. Oracle中树形查询使用方法

    树形查询一般用于上下级场合,使用的特殊sql语法包括level,prior,start with,connect by等,下面将就实例来说明其用法. 表定义: create table tb_hier ...

  8. 基于 ramfs 的 OTA

    背景 默认的 OTA 方案是基于 recovery 系统完成的.某个产品考虑产品形态和 flash 容量之后,计划去掉 recovery 系统(不考虑掉电安全),这就需要 OTA 方案能支持在只有单个 ...

  9. Appium自动化Android环境搭建

      前言: 本系列教程用于个人经验记录,用于他人借鉴,提供一定参考价值.经常会有一种感觉,工具或技术在某一阶段使用比较熟练,过一段时间就可能会遗忘,俗话说好记性不如烂笔头,以此记录. appium简介 ...

  10. Tomcat 第一篇:源码导入 IDEA 编辑器

    1 引言 做 Java 的同学应该都见过上面这只名字叫 Tomcat 的猫,毕竟这只猫在过去和现在都是全球最流行的 Web 容器之一. 很有意思的一件事儿是从我接触这只猫开始,从来不知道它的中文名字是 ...