题链:

http://www.lydsy.com/JudgeOnline/problem.php?id=4008
题解:

概率dp,神仙题
如果我们可以求出每种牌被取到的概率f,那么最后期望造成的伤害也就很好计算了。
定义dp[i][j]表示有j轮游戏在1~i中的某张牌处就结束的概率。
那么此时我们考虑dp[i][j]会怎样对f[i+1]造成贡献:
只剩下了R-j轮游戏进行到了第i+1张牌,怎么计算这种情况下第i+1张牌发动技能的概率g呢?
(令p为其发动技能的概率,并给这R-j轮游戏重新依次编号为1,2,……,R-j)
显然有:g=p+(1-p)*p+(1-p)^2*p+p……+(1-p)^(R-j-1)*p
上式表示重新编号后的在第1轮发动技能的概率+在第2轮发动技能的概率+……+在第R-j轮发动技能的概率。
然而不需要这么麻烦的计算,因为上面的g=1-(1-p)^(R-j),(自己YY为什么是对的吧)
然后把对f[i+1]进行贡献:f[i+1]+=dp[i][j]*g

接下来考虑如何转移dp[i][j]:
1.这R-j轮可以进行到第i+1张牌的机会都没有让其发动技能:
dp[i+1][j]+=dp[i][j]*(1-p)^(R-j)
2.这R-j轮可以进行到第i+1张牌的机会让其发动了一次技能:
dp[i+1][j+1]+=dp[i][j]*(1-(1-p)^(R-j))

然后就是不断转移dp的同时去求出f[]数组。

(真的是神仙题,题解都看了好久,好像第一次遇到这种定义了一个莫名其妙的dp状态去辅助求出另外一个东西从而得出答案的题。。。)

代码:

#include<bits/stdc++.h>
using namespace std;
double dp[250][150],p[250],f[250],ans;
int d[250];
int N,R,Case;
double fastpow(double a,int b){
double ret=1;
for(;b;a=a*a,b>>=1)
if(b&1) ret*=a;
return ret;
}
int main(){
for(scanf("%d",&Case);Case;Case--){
scanf("%d%d",&N,&R);
for(int i=1;i<=N;i++) scanf("%lf%d",&p[i],&d[i]),f[i]=0;
for(int i=0;i<=N;i++) for(int j=0;j<=R;j++) dp[i][j]=0;
dp[0][0]=1; ans=0;
for(int i=0;i<N;i++)
for(int j=0;j<=R;j++){
double k=fastpow(1-p[i+1],R-j);
dp[i+1][j]+=dp[i][j]*k;
if(j+1<=R){
dp[i+1][j+1]+=dp[i][j]*(1-k);
f[i+1]+=dp[i][j]*(1-k);
}
}
for(int i=1;i<=N;i++) ans+=f[i]*d[i];
printf("%.10lf\n",ans);
}
return 0;
}

  

●BZOJ 4008 [HNOI2015]亚瑟王的更多相关文章

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

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

  2. bzoj 4008: [HNOI2015]亚瑟王

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

  3. BZOJ 4008: [HNOI2015]亚瑟王 [DP 概率 !!!]

    传送门 题意: $r$轮$n$张卡牌,每一轮依次考虑每张卡牌,$p_i$概率发动造成$d_i$伤害后结束本轮或者继续考虑下一张 每张卡牌发动过之后以后都会跳过 求$r$轮之后的期望伤害 看了一节课出题 ...

  4. 4008: [HNOI2015]亚瑟王

    4008: [HNOI2015]亚瑟王 链接 分析: 根据期望的线性性,直接求出每张牌出现的概率,最后乘以攻击力就是答案. 每张牌出现的概率只与它前面的牌有关,与后面的没有关系,于是按顺序考虑每张牌. ...

  5. 【BZOJ】4008: [HNOI2015]亚瑟王

    题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=4008 这题主要在于:先算概率,再算期望! 一轮一轮的计算似乎很复杂,每一轮它其实是可以看作 ...

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

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

  7. 【BZOJ4008】[HNOI2015]亚瑟王(动态规划)

    [BZOJ4008][HNOI2015]亚瑟王(动态规划) 题面 BZOJ 洛谷 题解 设\(f[i][j]\)表示前\(i\)张卡中有\(j\)张被触发的概率. 分两种情况转移,即当前这张是否被触发 ...

  8. 【BZOJ4008】[HNOI2015]亚瑟王

    [BZOJ4008][HNOI2015]亚瑟王 题面 bzoj 洛谷 题解 由期望的线性性 可以知道,把所有牌打出的概率乘上它的伤害加起来就是答案 记第$i$张牌打出的概率为$fp[i]$ 则 $$ ...

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

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

随机推荐

  1. c语言——第0次作业

    1.你认为大学的学习生活.同学关系.师生应该是怎样?请一个个展开描写 大学生活:大学生活充满着挑战,首先当然必须先掌握自己所学的专业知识,然后就要学会独立,可以处理好人际关系,并且要有更强的自我约束能 ...

  2. Beta阶段敏捷冲刺报告-DAY3

    Beta阶段敏捷冲刺报告-DAY3 Scrum Meeting 敏捷开发日期 2017.11.4 会议时间 12:30 会议地点 软工所 参会人员 全体成员 会议内容 当天任务确认,进度调整, 讨论时 ...

  3. configparser 练习

    [kaixin]xxx = 333name = hahheh = 0[erick]age = 123555xxx = ooo555name = hah555 1 import configparser ...

  4. bzoj千题计划245:bzoj1095: [ZJOI2007]Hide 捉迷藏

    http://www.lydsy.com/JudgeOnline/problem.php?id=1095 查询最远点对,带修改 显然可以用动态点分治 对于每个点,维护两个堆 堆q1[x] 维护 点分树 ...

  5. [USACO4.1]麦香牛块Beef McNuggets

    https://www.luogu.org/problemnew/show/P2737 给出n个数ai,求这n个数不能累加出的最大的数 最大的数无限大或能凑出所有的自然数则输出0 n<=10,a ...

  6. GitChat招募IT类写作作者

    GitChat是一个移动端的IT知识.技术分享平台,于2017.10和CSDN合并,成为其旗下独立品牌. 我们正在寻求有互联网基因的人来一起分享IT人员的关切,诚挚邀请您来做一次分享(让IT类文章变现 ...

  7. java:多层文件夹情况下,判断文件夹下是否有文件夹,并获取到没有文件夹的名字的方法

    业务问题案例 在公司遇到的一个问题,本以为很小很好解决,没想到花了一下午时间.图给的是文件路径,page1下有10个文件夹,每个有的有文件夹或者文件,要求得到page1下(即:123456789,10 ...

  8. django models的点查询/跨表查询/双下划线查询

    django models 在日常的编程中,我们需要建立数据库模型 而往往会用到表与表之间的关系,这就比单表取数据要复杂一些 在多表之间发生关系的情形下,我们如何利用models提供的API的特性获得 ...

  9. New UWP Community Toolkit - DropShadowPanel

    概述 UWP Community Toolkit  中有一个为 Frmework Element 提供投影效果的控件 - DropShadowPanel,本篇我们结合代码详细讲解  DropShado ...

  10. MVC Form 表单 提交 集合 及 复杂对象

    public class Customer { public string FName{get;set;} public Address address{get;set;} } public clas ...