LightOJ 1395 A Dangerous Maze (II) 期望DP
A Dangerous Maze (II) LightOJ - 1395
这个题是 LightOJ 1027 A Dangerous Maze 基础概率DP 的加强版。
有 nnn 个门,其中有些门通过之后, xix_ixi 分钟后会回到原点,另一些门通过后,xix_ixi 分钟后会出去,现在能够记住最近的 KKK 次选择,下次选择时会从剩下的未在这 KKK 次选择中出现的门进行选择,问出去的期望时间。
首先这 KKK 次记住的肯定是未出去的门,因为假如出去的话就已经结束了,不需要再进行选择,定义出去的门为集合 A\mathcal{A}A,返回的门为集合 B\mathcal{B}B,用 dp[i]dp[i]dp[i] 表示记忆了 iii 个未出去的门对应的期望,分两种情况进行讨论:
(1)假如 K≥∣B∣K\ge|\mathcal{B}|K≥∣B∣,也就是说记忆的 KKK 个经验能够包括到所有回来的门,则 dp[∣B∣]=1∣A∣∑i∈Axidp[|\mathcal{B}|]=\dfrac{1}{|\mathcal{A}|}\sum\limits_{i\in\mathcal{A}}x_idp[∣B∣]=∣A∣1i∈A∑xi,即此时的期望就等于从能够出去的门中选一个之后的期望时间。此时再推 j<∣B∣j<|\mathcal{B}|j<∣B∣ 时对应的 dpdpdp 值,此时 dp[j]=1n−j∑i∈Axi+1n−j(∑i∈B∖C(xi+dp[j+1]))dp[j]=\dfrac{1}{n-j}\sum\limits_{i\in\mathcal{A}}x_i+\dfrac{1}{n-j}(\sum\limits_{i\in\mathcal{B}\setminus\mathcal{C}}(x_i+dp[j+1]))dp[j]=n−j1i∈A∑xi+n−j1(i∈B∖C∑(xi+dp[j+1])),其中 C\mathcal{C}C 表示已经选择过的 jjj 个不能出去的门的集合,B∖C\mathcal{B}\setminus\mathcal{C}B∖C 表示还未选择的不能出去的门的集合,因为 C\mathcal{C}C 是一个随机选择出来的集合,可以证明:
∑i∈B∖Cxi=∣B∖C∣∣B∣∑i∈Bxi\sum_{i\in\mathcal{B}\setminus\mathcal{C}}x_i=\frac{|\mathcal{B}\setminus\mathcal{C}|}{|\mathcal{B}|}\sum_{i\in\mathcal{B}}x_i i∈B∖C∑xi=∣B∣∣B∖C∣i∈B∑xi
因此:
dp[j]=1n−j∑i∈Axi+∣B∖C∣n−j(∑i∈Bxi∣B∣+dp[j+1])dp[j]=1n−j∑i∈Axi+∣B∣−jn−j(∑i∈Bxi∣B∣+dp[j+1])\begin{aligned} dp[j]&=\frac{1}{n-j}\sum_{i\in\mathcal{A}}x_i+\frac{|\mathcal{B}\setminus\mathcal{C}|}{n-j}(\frac{\sum_{i\in\mathcal{B}}x_i}{|\mathcal{B}|}+dp[j+1])\\ dp[j]&=\frac{1}{n-j}\sum_{i\in\mathcal{A}}x_i+\frac{|\mathcal{B}|-j}{n-j}(\frac{\sum_{i\in\mathcal{B}}x_i}{|\mathcal{B}|}+dp[j+1])\\ \end{aligned} dp[j]dp[j]=n−j1i∈A∑xi+n−j∣B∖C∣(∣B∣∑i∈Bxi+dp[j+1])=n−j1i∈A∑xi+n−j∣B∣−j(∣B∣∑i∈Bxi+dp[j+1])
逆推即可以求得 dp[0]dp[0]dp[0]。
(2)假如 K<∣B∣K<|\mathcal{B}|K<∣B∣,也就是说并不能完全记住所有的返回门,那么 j=Kj=Kj=K 时:
dp[K]=1n−K∑i∈Axi+∣B∣−Kn−K(∑i∈Bxi∣B∣+dp[K])dp[K]=1n−∣B∣∑i∈Axi+∣B∣−Kn−∣B∣∑i∈Bxi∣B∣\begin{aligned} dp[K]&=\frac{1}{n-K}\sum_{i\in\mathcal{A}}x_i+\frac{|\mathcal{B}|-K}{n-K}(\frac{\sum_{i\in\mathcal{B}}x_i}{|\mathcal{B}|}+dp[K])\\ dp[K]&=\frac{1}{n-|\mathcal{B}|}\sum_{i\in\mathcal{A}}x_i+\frac{|\mathcal{B}|-K}{n-|\mathcal{B}|}\frac{\sum_{i\in\mathcal{B}}x_i}{|\mathcal{B}|}\\ \end{aligned} dp[K]dp[K]=n−K1i∈A∑xi+n−K∣B∣−K(∣B∣∑i∈Bxi+dp[K])=n−∣B∣1i∈A∑xi+n−∣B∣∣B∣−K∣B∣∑i∈Bxi
j<Kj<Kj<K 时:
dp[j]=1n−j∑i∈Axi+∣B∣−jn−j(∑i∈Bxi∣B∣+dp[j+1])dp[j]=\frac{1}{n-j}\sum_{i\in\mathcal{A}}x_i+\frac{|\mathcal{B}|-j}{n-j}(\frac{\sum_{i\in\mathcal{B}}x_i}{|\mathcal{B}|}+dp[j+1]) dp[j]=n−j1i∈A∑xi+n−j∣B∣−j(∣B∣∑i∈Bxi+dp[j+1])
也可以逆推求得 dp[0]dp[0]dp[0]。
代码如下:
#include<iostream>
#include<cstdio>
#include<algorithm>
//#define WINE
using namespace std;
int T,iCase,n,K,a,ca,cb,sa,sb;
double res;
int main(){#ifdef WINEfreopen("data.in","r",stdin);
#endifscanf("%d",&T);while(T--){scanf("%d%d",&n,&K);ca=cb=sa=sb=0;for(int i=0;i<n;i++){scanf("%d",&a);if(a>0)ca++,sa+=a;else cb++,sb+=-a;}if(cb==n){printf("Case %d: -1\n",++iCase);continue;}K=min(K,cb);if(K<cb)res=1.0/(n-cb)*sa+1.0*(cb-K)*sb/(n-cb)/cb;else res=1.0*sa/ca;for(int j=K-1;j>=0;j--)res=1.0*sa/(n-j)+1.0*(cb-j)/(n-j)*(1.0*sb/cb+res);printf("Case %d: %.8lf\n",++iCase,res);}return 0;
}
LightOJ 1395 A Dangerous Maze (II) 期望DP相关推荐
- LightOJ - 1395 A Dangerous Maze (II) —— 期望
题目链接:https://vjudge.net/problem/LightOJ-1395 1395 - A Dangerous Maze (II) PDF (English) Statisti ...
- LightOJ 1395 A Dangerous Maze (II) (概率dp)
题意:给出n扇门,每扇门都给出一个数x,若为正数,则表示在x时间后走出迷宫,若为负数,则表示在x时间后回到起点,你会记得最后k扇你走过的门(不会再走),求最后的期望时间. 题解:概率dp 这题的进阶版 ...
- LightOJ - 1027 A Dangerous Maze —— 期望
题目链接:https://vjudge.net/problem/LightOJ-1027 1027 - A Dangerous Maze PDF (English) Statistics Fo ...
- 【LightOJ - 1027】A Dangerous Maze(概率dp,数学期望)
题干: You are in a maze; seeing n doors in front of you in beginning. You can choose any door you like ...
- hdu4035 Maze 【期望dp + 数学】
题目链接 BZOJ4035 题解 神题啊...orz 不过网上题解好难看,数学推导不写\(Latex\)怎么看..[Latex中毒晚期] 我们由题当然能很快写出\(dp\)方程 设\(f[i]\)表示 ...
- LightOj 1027 A Dangerous Maze
一个迷宫有n扇门,走第i扇门时间为xi,若xi为正,则走出迷宫,若xi为负,则回到原来位置并忘记已走过的门.问走出迷宫的时间期望,若不能走出迷宫输出inf,否则以分数形式输出p/q. 题目链接 我们设 ...
- [A Dangerous Maze LightOJ - 1027 ][概率题]
A Dangerous Maze LightOJ - 1027 题目大意:就是你有nnn个门每次你都会随机选一个门,这个门对应得数值如果是负的那么你将会在aia_iai的时间后回到原来位置,如果是正 ...
- A - A Dangerous Maze
Lightoj 1027 A - A Dangerous Maze //题目大意:一个迷宫有n个门,每个对应一个值,正值表示经过这么多秒后直接出迷宫,负值代表这么多秒后回到最开始的地方,问最后出去的期 ...
- luogu P4745 [CERC2017]Gambling Guide(期望DP + 最短路实现)
整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 P4745 [CERC2017]Gambling Guide(期望DP + 最短路实现) Weblin ...
最新文章
- Spark组件和术语定义
- Django项目中集成富文本编辑器的通用方法,适合KindEditor,xhEditor,NicEditor,wymeditor等 .
- 基础网络函数介绍及其Cpp实例(C++)
- 联想小新电脑摄像头黑屏、检测不到设备、指示灯不亮解决方案
- win10系统进行电脑分盘
- www.skymaya.com:8080/index.php,www_skymaya_com
- jsp医疗报销管理系统 myeclipse开发技术 mysql数据库
- Fast-Paced Multiplayer (Part I): Introduction
- markdown中数学符号和公式总结
- 武汉坚守第二十二天——谣言与辟谣与慌乱
- [人工智能-综述-5]:人工智能课程学习的10大基本问题与学习方法的建议
- 《Data Structures and Algorithm Analysis in C》学习与刷题笔记
- linux命令中tar后的zxvf分别表示含义
- Jsoup 爬取真气网排名信息
- 强大的Java前台后台开发工具
- 【xmind 2021-2022,文件丢失-软件异常-历史版本找回】
- 国内云服务器怎么选配置?如何低价购买国内云主机?
- 游戏建模初学者必看的游戏人物模型贴图制作方法及制作小技巧
- 初学者易懂回文类型判断
- 【HMS Core】Health Kit关于获取历史数据问题