P3239 [HNOI2015]亚瑟王(期望)
解析
显然可以利用期望的线性性对每张牌单独计算贡献。
现在的关键就是如何求出每张牌被使用的概率。
考虑第 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]亚瑟王(期望)相关推荐
- P3239 [HNOI2015]亚瑟王(巧妙的概率dp)
P3239 [HNOI2015]亚瑟王 乍一看很难下手,第iii张牌是否发动和前面的牌是否发动相关 但是我们发现每张牌最多只会发动一次 假设我们算出了g[i]g[i]g[i]表示第iii张牌在所有的r ...
- BZOJ4008. [HNOI2015]亚瑟王 期望概率dp
看到这道题想什么? 一个好转移的状态由于T最多444所以把每个点控制在O(400000)以内,所以对于n和r最多乘一次因此猜f[n][r],f[r][n],首先一轮一轮的搞不好转移,那么先想一想f[n ...
- BZOJ-4008: [HNOI2015]亚瑟王 (概率期望DP)
4008: [HNOI2015]亚瑟王 Time Limit: 20 Sec Memory Limit: 512 MBSec Special Judge Submit: 1627 Solved: ...
- 概率DP——BZOJ4008 [HNOI2015]亚瑟王
[HNOI2015]亚瑟王 Description 小 K 不慎被 LL 邪教洗脑了,洗脑程度深到他甚至想要从亚瑟王邪教中脱坑.他决定,在脱坑之前,最后再来打一盘亚瑟王.既然是最后一战,就一定要打得漂 ...
- 【BZOJ4008】【HNOI2015】亚瑟王 [期望DP]
亚瑟王 Time Limit: 20 Sec Memory Limit: 512 MB [Submit][Status][Discuss] Description 小 K 不慎被 LL 邪教洗脑了, ...
- [HNOI2015]亚瑟王
题目描述 小 K 不慎被 LL 邪教洗脑了,洗脑程度深到他甚至想要从亚瑟王邪教中脱坑.他决定,在脱坑之前,最后再来打一盘亚瑟王.既然是最后一战,就一定要打得漂亮.众所周知,亚瑟王是一个看脸的游戏,技能 ...
- 【文文殿下】[BZOJ4008] [HNOI2015] 亚瑟王
题解 这是一个经典的概率DP模型 设\(f_{i,j}\)表示考虑到前\(i\)张牌,有\(j\)轮没打出牌的可能性,那么显然\(f_{0,r} = 1\). 考虑第\(i+1\)张牌,他可能在剩下的 ...
- 【BZOJ4008】【HNOI2015】亚瑟王(DP,期望概率)
Description 小 K 不慎被 LL 邪教洗脑了,洗脑程度深到他甚至想要从亚瑟王邪教中脱坑.他决定,在脱坑之前,最后再来打一盘亚瑟王.既然是最后一战,就一定要打得漂亮.众所周知,亚瑟王是一个看 ...
- 乖离性暗机器人_《乖离性百万亚瑟王》国服超弩暗机器人平民通关攻略
乖离性百万亚瑟王国服第一次迎来新的机器人类型BOSS,难度还是比较大的!在打暗机器人的时候有什么需要注意的细节,我们一起来看看吧! 首先介绍一下暗机器人的属性数据: 属性:暗系 接下来介绍一下BOSS ...
最新文章
- 二叉树简介及C++实现
- bzoj 1026: [SCOI2009]windy数 数位DP算法笔记
- pytorch maxout实现
- 激励和设定可实现的目标是任何学习成功的关键。
- 批量删除某个目录下的 某类型文件方法
- Aerospike NoSQL 数据库介绍
- SDNE: 阿里应用深度学习进行图嵌入,构造凑单算法模型
- centos6.8 mysql5.6_Centos6.8 Mysql5.6 安装配置教程(转)
- 【Flink】Flink 消费 kafka 实现 限流处理 RateLimiter
- 空头平仓什么意思_什么是白糖期货期权仿真交易套利机会?
- python应对反爬虫策略_python解决网站的反爬虫策略总结
- MySQL安装步骤(ZIP版)
- 绘制网络组建拓扑图方法分享
- C++中如何创建一个类?
- RoboMaster汇总
- 旅游网站管理系统简易版 php开源,基于Laravel框架开发的旅游网站管理系统PHP源码...
- 在ArcMap中批量创建文本框批量输出PDF
- MyEclipse 7.1官网下载
- SQL删除空格Trim函数(RTrim、LTrim)与<trim prefix=““ suffix=““ suffixOverrides=““ prefixOverrides=““></trim>
- 网站建设提高实用性的几个建议
热门文章
- mac apache2 php,Mac OSX 之 PHP开发环境Apache2配置
- a 寻路算法 java_A*(也叫A star, A星)寻路算法Java版 | 学步园
- 数据集转换_为什么LSTM看起来那么复杂,以及如何避免时序数据的处理差异和混乱...
- python函数用于创建对象_Python-创建类并使用函数更改其对象值
- php acl rbac,建站常用的用户权限管理模型ACL和RBAC的区别
- ajax jquery php_基于Ajax jquery的使用php登录
- 大脚战场插件怎么关闭_PM工具栏插件:HonmToolBar
- mysql 表与表之间的条件比对_值得收藏 | 一份最完整的MySQL规范
- python连接mysql_Python爬虫进阶教程(八):MySQL 数据库连接
- acwing2058. 笨拙的手指(进制转换)