解析

显然可以利用期望的线性性对每张牌单独计算贡献。
现在的关键就是如何求出每张牌被使用的概率。

考虑第 iii 张牌,如果它的前面 [1,i−1][1,i-1][1,i−1] 中有 jjj 张牌被使用,那么它被使用的概率就是 1−(1−pi)r−j1-(1-p_i)^{r-j}1−(1−pi​)r−j。
根据这个,设计 fi,jf_{i,j}fi,j​ 表示前 iii 张牌中使用了 jjj 张的概率,也不难进行转移:
fi,j=fi−1,j−1(1−(1−pi)r−j)+fi−1,j∗(1−pi)r−j+1f_{i,j}=f_{i-1,j-1}(1-(1-p_i)^{r-j})+f_{i-1,j}*(1-p_i)^{r-j+1}fi,j​=fi−1,j−1​(1−(1−pi​)r−j)+fi−1,j​∗(1−pi​)r−j+1
求出 fff 后再用其求出每张牌的概率即可。
预处理 (1−pi)k(1-p_i)^k(1−pi​)k,时间复杂度 O(Tnr)O(Tnr)O(Tnr)。

代码

#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define ull unsigned long long
#define debug(...) fprintf(stderr,__VA_ARGS__)
#define ok debug("ok\n")
inline ll read(){ll x(0),f(1);char c=getchar(); while(!isdigit(c)){if(c=='-')f=-1;c=getchar();}while(isdigit(c)){x=(x<<1)+(x<<3)+c-'0';c=getchar();}return f*x;
}const int N=250;
const int mod=1e9+7;int n,m;
double p[N],f[N][N],mi[N][N];
int d[N];
void work(){n=read();m=read();for(int i=1;i<=n;i++) scanf("%lf%d",&p[i],&d[i]);  for(int i=1;i<=n;i++){mi[i][0]=1;for(int j=1;j<=m;j++) mi[i][j]=mi[i][j-1]*(1-p[i]);}f[0][0]=1;for(int i=1;i<=n;i++){f[i][0]=f[i-1][0]*mi[i][m];for(int j=1;j<=i;j++){f[i][j]=f[i-1][j-1]*(1-mi[i][m-j+1])+f[i-1][j]*mi[i][m-j];}}double ans(0);for(int i=1;i<=n;i++){for(int j=1;j<=i;j++) ans+=d[i]*f[i-1][j-1]*(1-mi[i][m-j+1]);}printf("%.10lf\n",ans);
}
signed main(){#ifndef ONLINE_JUDGEfreopen("a.in","r",stdin);freopen("a.out","w",stdout);#endifint T=read();while(T--) work();return 0;
}
/*
*/

P3239 [HNOI2015]亚瑟王(期望)相关推荐

  1. P3239 [HNOI2015]亚瑟王(巧妙的概率dp)

    P3239 [HNOI2015]亚瑟王 乍一看很难下手,第iii张牌是否发动和前面的牌是否发动相关 但是我们发现每张牌最多只会发动一次 假设我们算出了g[i]g[i]g[i]表示第iii张牌在所有的r ...

  2. BZOJ4008. [HNOI2015]亚瑟王 期望概率dp

    看到这道题想什么? 一个好转移的状态由于T最多444所以把每个点控制在O(400000)以内,所以对于n和r最多乘一次因此猜f[n][r],f[r][n],首先一轮一轮的搞不好转移,那么先想一想f[n ...

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

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

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

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

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

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

  6. [HNOI2015]亚瑟王

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

  7. 【文文殿下】[BZOJ4008] [HNOI2015] 亚瑟王

    题解 这是一个经典的概率DP模型 设\(f_{i,j}\)表示考虑到前\(i\)张牌,有\(j\)轮没打出牌的可能性,那么显然\(f_{0,r} = 1\). 考虑第\(i+1\)张牌,他可能在剩下的 ...

  8. 【BZOJ4008】【HNOI2015】亚瑟王(DP,期望概率)

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

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

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

最新文章

  1. 二叉树简介及C++实现
  2. bzoj 1026: [SCOI2009]windy数 数位DP算法笔记
  3. pytorch maxout实现
  4. 激励和设定可实现的目标是任何学习成功的关键。
  5. 批量删除某个目录下的 某类型文件方法
  6. Aerospike NoSQL 数据库介绍
  7. SDNE: 阿里应用深度学习进行图嵌入,构造凑单算法模型
  8. centos6.8 mysql5.6_Centos6.8 Mysql5.6 安装配置教程(转)
  9. 【Flink】Flink 消费 kafka 实现 限流处理 RateLimiter
  10. 空头平仓什么意思_什么是白糖期货期权仿真交易套利机会?
  11. python应对反爬虫策略_python解决网站的反爬虫策略总结
  12. MySQL安装步骤(ZIP版)
  13. 绘制网络组建拓扑图方法分享
  14. C++中如何创建一个类?
  15. RoboMaster汇总
  16. 旅游网站管理系统简易版 php开源,基于Laravel框架开发的旅游网站管理系统PHP源码...
  17. 在ArcMap中批量创建文本框批量输出PDF
  18. MyEclipse 7.1官网下载
  19. SQL删除空格Trim函数(RTrim、LTrim)与<trim prefix=““ suffix=““ suffixOverrides=““ prefixOverrides=““></trim>
  20. 网站建设提高实用性的几个建议

热门文章

  1. mac apache2 php,Mac OSX 之 PHP开发环境Apache2配置
  2. a 寻路算法 java_A*(也叫A star, A星)寻路算法Java版 | 学步园
  3. 数据集转换_为什么LSTM看起来那么复杂,以及如何避免时序数据的处理差异和混乱...
  4. python函数用于创建对象_Python-创建类并使用函数更改其对象值
  5. php acl rbac,建站常用的用户权限管理模型ACL和RBAC的区别
  6. ajax jquery php_基于Ajax jquery的使用php登录
  7. 大脚战场插件怎么关闭_PM工具栏插件:HonmToolBar
  8. mysql 表与表之间的条件比对_值得收藏 | 一份最完整的MySQL规范
  9. python连接mysql_Python爬虫进阶教程(八):MySQL 数据库连接
  10. acwing2058. 笨拙的手指(进制转换)