思路

神仙概率dp

由于期望的线性性质,能够想到最后要求的期望价值就是把每个卡牌发动的概率\(g_i\)乘上伤害\(val_i\)之后加到一起

然后怎么求\(g_i\)呢,肯定是要dp的

我想了例如dp[i][j]表示第i张纸牌还有j次的考虑机会,dp[i][j]表示第i轮牌j发动的概率,但是都没有想出转移

发现每个牌一局游戏只能够发动一次,而且前面发动一次之后后面的纸牌不能再发动

然后发现第0张纸牌发动的概率是\(p[0]=(1-(1-k[0])^r)\)(总概率-每一回合都不放的概率为有1回合放的概率)

第一张纸牌发动会受到第0张纸牌的影响,如果第0张纸牌不发动,第一张发动的概率就是\(p[1]=(1-(1-k[1])^r)\),如果第0张发动,则概率为\(p[1]=(1-(1-k[1])^{r-1})\),每一张牌发动的概率只依赖于前面,且只依赖于有几张纸牌发动,所以可以把有几张纸牌发动压进状态里,然后就可以dp了

设dp[i][j]表示前i张纸牌,有j张发动的概率

决策自然是有两种:第i张发动/第i张不发动

如果第i张发动,则前面i-1张中有j-1张发动,第i张发动的概率为\(p[i]=(1-(1-k[i])^{r-j+1})\)

如果第i张不发动,则前面i-1张中有j张发动,第i张不发动的概率为\(p[i]=(1-k[i])^{r-j}\)

然后就得出状态转移方程为\(dp[i][j]=dp[i-1][j-1]*(1-(1-k[i])^{r-j+1})+dp[i-1][j]*(1-k[i])^{r-j}\)

所以\(g_i=\sum_{j=0}^{min(i-1,r)}dp[i-1][j]*(1-(1-k[i])^{r-j})\)

然后没了

注意多组数据,数组要清空

代码

#include <cstdio>
#include <algorithm>
#include <cstring>
using namespace std;
int T,n,m,val[230];
double k[230],dp[230][140],g[230];
double pow(double a,int b){
double ans=1;
while(b){
if(b&1)
ans=(ans*a);
a=(a*a);
b>>=1;
}
return ans;
}
int main(){
// freopen("2.in","r",stdin);
// freopen("test.out","w",stdout);
scanf("%d",&T);
while(T--){
double ans=0;
memset(val,0,sizeof(val));
memset(k,0,sizeof(k));
memset(dp,0,sizeof(dp));
memset(g,0,sizeof(g));
scanf("%d %d",&n,&m);
for(int i=1;i<=n;i++){
scanf("%lf %d",&k[i],&val[i]);
}
// printf("ok\n");
dp[0][0]=1;
for(int i=1;i<=n;i++)
for(int j=0;j<=min(i,m);j++){
if(j>0){
dp[i][j]+=dp[i-1][j-1]*(1-pow((1-k[i]),m-j+1));
}
dp[i][j]+=dp[i-1][j]*(pow(1-k[i],m-j));
}
// printf("ok\n");
for(int i=1;i<=n;i++)
for(int j=0;j<=min(i-1,m);j++)
g[i]+=dp[i-1][j]*(1-pow(1-k[i],m-j));
for(int i=1;i<=n;i++)
ans=ans+g[i]*val[i];
printf("%.10lf\n",ans);
}
return 0;
}

P3239 [HNOI2015]亚瑟王的更多相关文章

  1. [洛谷 P3239] [HNOI2015]亚瑟王

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

  2. 洛谷P3239 [HNOI2015]亚瑟王

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

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

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

  4. P3239 [HNOI2015]亚瑟王——概率DP

    题面:亚瑟王 最近考试考期望很自闭啊,没做过这种类型的题,只能现在练一练: 所谓期望,就是状态乘上自己的概率:对于这道题来说,我们要求的是每张牌的伤害乘上打出的概率的和: 当然不是直接乘,因为给的是每 ...

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

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

  6. Luogu P3239 [HNOI2015]亚瑟王

    题目链接 \(Click\) \(Here\) 期望神题.最开始一直尝试推朴素一点的,逻辑上的\(DP\)式子,后来发现一直出锅,可能是我的式子没容斥对... 题解中给出的想法是这样的: 首先,如果直 ...

  7. 洛谷 P3239 [HNOI2015]亚瑟王(期望dp)

    题面 luogu 题解 一道复杂的期望\(dp\) 思路来源:__stdcall 容易想到,只要把每张牌打出的概率算出来就可以求出\(ans\) 设\(fp[i]\)表示把第\(i\)张牌打出来的概率 ...

  8. 洛谷P3239 [HNOI2015]亚瑟王(期望dp)

    传送门 stdcall大佬好强 期望的姿势不是很高……据大佬说期望有一个线性性质,也就是说可以把每一张牌的期望伤害算出来然后再加起来就是总的期望伤害 因为每一张牌只能用一次,我们设$dp[i]$表示第 ...

  9. 洛谷 P3239 [HNOI2015]亚瑟王(期望+dp)

    题面传送门 感觉是道挺好的题,可惜当时没写题解来着的? 根据期望的线性公式,我们求出每个卡牌被发动的概率 \(q_i\),然后 \[ans=\sum\limits_{i=1}^np_id_i \] 于 ...

随机推荐

  1. Yii GridView

  2. Robotframework 3- 安装

    1. 安装, python3 安装好后,在cmd中运行 pip install robotframework # Install the latest version (does not upgrad ...

  3. Keep On Movin (贪心)

    #include<bits/stdc++.h> using namespace std; int main(){ int T, n, a;scanf("%d",& ...

  4. python 可视化

    一.环境安装 windows:pip install numpy scipy matplotlib #pip install http://effbot.org/downloads/Imaging-1 ...

  5. ubuntu14.04 cpu-ssd

    1. ssd-caffe部署 五年半前老笔记本,没有GPU(其实有,AMD的,不能装CUDA),之前装过CPU版的Caffe 新建一个目录,然后参考网上步骤 sudo git clone https: ...

  6. python 读写json数据

    json 模块提供了一种很简单的方式来编码和解码JSON 数据. 字符串操作 其中两个主要的函数是json.dumps() 和json.loads() ,要比其他序列化函数库如pickle 的接口少得 ...

  7. 设计模式之Bridge(桥接)(转)

    Bridge定义 : 将抽象和行为划分开来,各自独立,但能动态的结合. 为什么使用? 通常,当一个抽象类或接口有多个具体实现(concrete subclass),这些concrete之间关系可能有以 ...

  8. c# 共享事件处理程序

    使用同一个方法来处理多个Button实例的Click事件. 1.全选所有的Button,在事件添加中的Click点击事件中添加处理函数. 2.假如一个label控件用于显示按钮按下输出文本 3.处理函 ...

  9. 20165215 2017-2018-2 《Java程序设计》第八周学习总结

    20165215 2017-2018-2 <Java程序设计>第八周学习总结 教材学习内容总结 进程与线程 进程是程序的一次动态执行过程,它对应了从代码加载.执行至执行完毕的一个完整过程. ...

  10. hiho一下 第148周

    题目1 : Font Size 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 Steven loves reading book on his phone. The b ...