HNOI 2015 【亚瑟王】
看着洛谷里那一排任务计划,瑟瑟发抖。。。。。。
题目大意:
你有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 【亚瑟王】的更多相关文章
- [HNOI 2015]亚瑟王
Description 小 K 不慎被 LL 邪教洗脑了,洗脑程度深到他甚至想要从亚瑟王邪教中脱坑. 他决定,在脱坑之前,最后再来打一盘亚瑟王.既然是最后一战,就一定要打得漂 亮.众所周知,亚瑟王是一 ...
- bzoj[HNOI2015]亚瑟王 - 递推与动规 - 概率与期望
[bzoj4008][HNOI2015]亚瑟王 2015年4月22日3,2991 Description 小 K 不慎被 LL 邪教洗脑了,洗脑程度深到他甚至想要从亚瑟王邪教中脱坑. 他决定,在脱坑之 ...
- BZOJ 4008 【HNOI2015】 亚瑟王
题目链接:亚瑟王 这道题好神啊TAT--果然我的dp还是太弱了-- 一开始想了半天的直接dp求期望,结果最后WA的不知所云-- 最后去翻了题解,然后发现先算概率,再求期望--新姿势\(get\). 我 ...
- Bzoj4008 [HNOI2015]亚瑟王
Time Limit: 20 Sec Memory Limit: 512 MBSec Special Judge Submit: 1009 Solved: 605[Submit][Status] ...
- 【BZOJ4008】[HNOI2015]亚瑟王 期望
[BZOJ4008][HNOI2015]亚瑟王 Description 小 K 不慎被 LL 邪教洗脑了,洗脑程度深到他甚至想要从亚瑟王邪教中脱坑. 他决定,在脱坑之前,最后再来打一盘亚瑟王.既然是最 ...
- 【BZOJ-4008】亚瑟王 概率与期望 + DP
4008: [HNOI2015]亚瑟王 Time Limit: 20 Sec Memory Limit: 512 MBSec Special JudgeSubmit: 832 Solved: 5 ...
- 洛谷P1930 亚瑟王的宫殿 Camelot
P1930 亚瑟王的宫殿 Camelot 19通过 53提交 题目提供者JOHNKRAM 标签USACO 难度提高+/省选- 提交 讨论 题解 最新讨论 暂时没有讨论 题目描述 很久以前,亚瑟王和 ...
- BZOJ 4008 亚瑟王
Description 小K不慎被LL邪教洗脑了,洗脑程度深到他甚至想要从亚瑟王邪教中脱坑. 他决定,在脱坑之前,最后再来打一盘亚瑟王.既然是最后一战,就一定要打得漂亮.众所周知,亚瑟王是一个看脸的游 ...
- BZOJ 4008: [HNOI2015]亚瑟王( dp )
dp(i, j)表示考虑了前i张牌, 然后还有j轮的概率. 考虑第i+1张牌: 发动的概率 : p = dp(i, j) * (1 - (1-p[i+1])^j) 没发动的概率 : dp(i, j) ...
- [BZOJ4008]亚瑟王
Description 小 K 不慎被 LL 邪教洗脑了,洗脑程度深到他甚至想要从亚瑟王邪教中脱坑. 他决定,在脱坑之前,最后再来打一盘亚瑟王.既然是最后一战,就一定要打得漂 亮.众所周知,亚瑟王是一 ...
随机推荐
- steam 数据转换
目录 数组和集合互转 数组转集合 方法一 遍历 方法二 asList 方法三 steam 集合转数组 方法一 循环 方法二 toArray 方法三 steam 小结 string转为Character ...
- UVA 11292-Dragon of Loowater (贪心)
Once upon a time, in the Kingdom of Loowater, a minor nuisance turned into a major problem. The shor ...
- 07_Python语法示例(基础语法,文件操作,异常处理)
1.写程序在终端输出图形 ######## # # # # ######## print("#" * 8) print("#" + " " ...
- 剑指 Offer 55 - I. 二叉树的深度
题目描述 输入一棵二叉树的根节点,求该树的深度.从根节点到叶节点依次经过的节点(含根.叶节点)形成树的一条路径,最长路径的长度为树的深度. 例如: 给定二叉树 [3,9,20,null,null,15 ...
- Tomcat9w.exe无法启动为started
问题: startup.bat可以正常启动,http://localhost:8080/ 可以正常访问.但是Tomcat9w.exe无法启动为started,一直为Stopped. 解决方案: 如下图 ...
- myeclipse前端界面乱码
框起来的值默认的格式是ISO-8859-1,改为UTF-8
- Oracle中树形查询使用方法
树形查询一般用于上下级场合,使用的特殊sql语法包括level,prior,start with,connect by等,下面将就实例来说明其用法. 表定义: create table tb_hier ...
- 基于 ramfs 的 OTA
背景 默认的 OTA 方案是基于 recovery 系统完成的.某个产品考虑产品形态和 flash 容量之后,计划去掉 recovery 系统(不考虑掉电安全),这就需要 OTA 方案能支持在只有单个 ...
- Appium自动化Android环境搭建
前言: 本系列教程用于个人经验记录,用于他人借鉴,提供一定参考价值.经常会有一种感觉,工具或技术在某一阶段使用比较熟练,过一段时间就可能会遗忘,俗话说好记性不如烂笔头,以此记录. appium简介 ...
- Tomcat 第一篇:源码导入 IDEA 编辑器
1 引言 做 Java 的同学应该都见过上面这只名字叫 Tomcat 的猫,毕竟这只猫在过去和现在都是全球最流行的 Web 容器之一. 很有意思的一件事儿是从我接触这只猫开始,从来不知道它的中文名字是 ...