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∣1​i∈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−j1​i∈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−j1​i∈A∑​xi​+n−j∣B∖C∣​(∣B∣∑i∈B​xi​​+dp[j+1])=n−j1​i∈A∑​xi​+n−j∣B∣−j​(∣B∣∑i∈B​xi​​+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−K1​i∈A∑​xi​+n−K∣B∣−K​(∣B∣∑i∈B​xi​​+dp[K])=n−∣B∣1​i∈A∑​xi​+n−∣B∣∣B∣−K​∣B∣∑i∈B​xi​​​

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−j1​i∈A∑​xi​+n−j∣B∣−j​(∣B∣∑i∈B​xi​​+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相关推荐

  1. LightOJ - 1395 A Dangerous Maze (II) —— 期望

    题目链接:https://vjudge.net/problem/LightOJ-1395 1395 - A Dangerous Maze (II)     PDF (English) Statisti ...

  2. LightOJ 1395 A Dangerous Maze (II) (概率dp)

    题意:给出n扇门,每扇门都给出一个数x,若为正数,则表示在x时间后走出迷宫,若为负数,则表示在x时间后回到起点,你会记得最后k扇你走过的门(不会再走),求最后的期望时间. 题解:概率dp 这题的进阶版 ...

  3. LightOJ - 1027 A Dangerous Maze —— 期望

    题目链接:https://vjudge.net/problem/LightOJ-1027 1027 - A Dangerous Maze     PDF (English) Statistics Fo ...

  4. 【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 ...

  5. hdu4035 Maze 【期望dp + 数学】

    题目链接 BZOJ4035 题解 神题啊...orz 不过网上题解好难看,数学推导不写\(Latex\)怎么看..[Latex中毒晚期] 我们由题当然能很快写出\(dp\)方程 设\(f[i]\)表示 ...

  6. LightOj 1027 A Dangerous Maze

    一个迷宫有n扇门,走第i扇门时间为xi,若xi为正,则走出迷宫,若xi为负,则回到原来位置并忘记已走过的门.问走出迷宫的时间期望,若不能走出迷宫输出inf,否则以分数形式输出p/q. 题目链接 我们设 ...

  7. [A Dangerous Maze LightOJ - 1027 ][概率题]

    A Dangerous Maze LightOJ - 1027 题目大意:就是你有nnn个门每次你都会随机选一个门,这个门对应得数值如果是负的那么你将会在aia_iai​的时间后回到原来位置,如果是正 ...

  8. A - A Dangerous Maze

    Lightoj 1027 A - A Dangerous Maze //题目大意:一个迷宫有n个门,每个对应一个值,正值表示经过这么多秒后直接出迷宫,负值代表这么多秒后回到最开始的地方,问最后出去的期 ...

  9. luogu P4745 [CERC2017]Gambling Guide(期望DP + 最短路实现)

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 P4745 [CERC2017]Gambling Guide(期望DP + 最短路实现) Weblin ...

最新文章

  1. Spark组件和术语定义
  2. Django项目中集成富文本编辑器的通用方法,适合KindEditor,xhEditor,NicEditor,wymeditor等 .
  3. 基础网络函数介绍及其Cpp实例(C++)
  4. 联想小新电脑摄像头黑屏、检测不到设备、指示灯不亮解决方案
  5. win10系统进行电脑分盘
  6. www.skymaya.com:8080/index.php,www_skymaya_com
  7. jsp医疗报销管理系统 myeclipse开发技术 mysql数据库
  8. Fast-Paced Multiplayer (Part I): Introduction
  9. markdown中数学符号和公式总结
  10. 武汉坚守第二十二天——谣言与辟谣与慌乱
  11. [人工智能-综述-5]:人工智能课程学习的10大基本问题与学习方法的建议
  12. 《Data Structures and Algorithm Analysis in C》学习与刷题笔记
  13. linux命令中tar后的zxvf分别表示含义
  14. Jsoup 爬取真气网排名信息
  15. 强大的Java前台后台开发工具
  16. 【xmind 2021-2022,文件丢失-软件异常-历史版本找回】
  17. 国内云服务器怎么选配置?如何低价购买国内云主机?
  18. 游戏建模初学者必看的游戏人物模型贴图制作方法及制作小技巧
  19. 初学者易懂回文类型判断
  20. 【HMS Core】Health Kit关于获取历史数据问题

热门文章

  1. 基础——ROM, RAM, FLASH, SSD, DDR3/4, eMMC, UFS, SD卡, TF卡,相互关系
  2. 高感性时代--全新思维:决胜未来的6大能力
  3. HP 打印机遇到各错误类型故障大全解释
  4. 拼多多商品发布规则|一度智信
  5. ABB机器人编程随记
  6. 爬虫之点触验证码的识别
  7. 3DMAX - 使用编辑多边形的小技巧
  8. 考研数学你必须要懂的事情
  9. 首家希尔顿逸林酒店及公寓于深圳启幕
  10. prometheus+alertmanager+webhook实现自定义监控报警系统