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

题解:概率dp
这题的进阶版,原版不会记住走了哪扇门。一样的思路。
用dp[i]dp[i]dp[i]表示记住iii扇门之后走出去还需要的期望时间。
n1:正数数量 n2:负数数量
s1:正数之和 s2:负数之和
①当k>=n2时,dp[k] = s1 / n1,相当于走任意一扇均可。
②当k<n2时,dp[k] = s1 / (n - k) + (n2 - k) * (dp[k] + s2 / n2) / (n - k),即走出去的期望时间+走回来再走出去的期望时间。化简得dp[k]dp[k]dp[k]即可。因为不确定走的哪扇负数的门,既然求期望,直接对于单扇门取平均值即可。

确定了终值,往前递推。
方程为:dp[i] = s1 / (n - i) + (n2 - i) * (dp[i + 1] + s2 / n2) / (n - i)

#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
#include<cstdio>
#include<string>
#include<cstring>
#include<algorithm>
#include<queue>
#include<stack>
#include<cmath>
#include<vector>
#include<fstream>
#include<set>
#include<map>
#include<sstream>
#include<iomanip>
#define ll long long
using namespace std;
int t, n, k, a[111];
double dp[111];
int main() {int cas = 0;scanf("%d", &t);while (t--) {scanf("%d%d", &n, &k);double s1 = 0, s2 = 0, n1 = 0, n2 = 0;for (int i = 1; i <= n; i++) {scanf("%d", &a[i]);if (a[i] > 0) n1++, s1 += a[i];else n2++, s2 += -a[i];}if (n2 == n) {printf("Case %d: -1\n", ++cas);continue;}if (k >= n2) dp[k = n2] = s1 / n1;else dp[k] = (s1 / (n - k) + (n2 - k) * (s2 / n2) / (n - k)) / (1 - (n2 - k) / (n - k));for (int i = k - 1; i >= 0; i--) {dp[i] = s1 / (n - i) + (n2 - i) * (dp[i + 1] + s2 / n2) * 1.0 / (n - i);}printf("Case %d: %f\n", ++cas, dp[0]);}return 0;
}

LightOJ 1395 A Dangerous Maze (II) (概率dp)相关推荐

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

    A Dangerous Maze (II) LightOJ - 1395 这个题是 LightOJ 1027 A Dangerous Maze 基础概率DP 的加强版. 有 nnn 个门,其中有些门通 ...

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

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

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

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

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

  5. LightOJ 1079 Just another Robbery【概率DP】

    题目: As Harry Potter series is over, Harry has no job. Since he wants to make quick money, (he wants ...

  6. 【LightOJ - 1030】Discovering Gold(概率dp,数学期望,期望的线性性)

    题干: You are in a cave, a long cave! The cave can be represented by a 1 x N grid. Each cell of the ca ...

  7. HDU 4035 Maze(树形概率DP)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4035 题意:一棵树,从结点1出发,在每个结点 i 都有3种可能:(1)回到结点1 , 概率 Ki:(2 ...

  8. LightOJ 1038-Race to 1 Again(概率dp)

    题意: 给你一个数n每一步这个数可以变为他的因子,直到这个数变为1,求n变到1的期望步数. 分析: dp[i],表示i变为1的期望步数,dp[1]=0,dp[n]是答案. dp[i]=sum(dp[j ...

  9. LightOj 1027 A Dangerous Maze

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

最新文章

  1. 13. python 类
  2. 2021聊城二中高考成绩查询,聊城高中成绩排名2021,聊城中考分数线排行榜
  3. 【转】Hadoop集群添加磁盘步骤
  4. 线程通信wait与notify
  5. Java-Web 基础加强之泛型、注解和Servlet3.0新特性
  6. qrcodejs2--Vue生成二维码组件封装
  7. 在HTML网页中使用ActiveX控件
  8. Python随机数生成方法
  9. 大家常用的 IDEA 插件大推荐,个个都得安装!
  10. 【java】浅析JDK中ServiceLoader的源码
  11. python工具包: argparse
  12. 东方通php支持,应用服务器TongWeb
  13. 浅析VO、DTO、DO、PO的概念、区别和用处
  14. android usb 摄像头 驱动开发,自制USB摄像头硬件的驱动编写_修改UVC
  15. [Objective-C]第一天
  16. CSS超链接标记大全
  17. 马来西亚-沙巴-亚庇游记
  18. 为啥一定要用残差图检查你的回归分析?
  19. 基于JSP的网上订餐管理系统的设计与实现
  20. 计算机中专综合知识,湖南省汨罗市职业中专高考(八)计算机应用专业综合知识试题讲解.doc...

热门文章

  1. PDPS软件:机器人外部柔性管线包模型导入与虚拟仿真操作方法
  2. 2022年6月大学英语六级翻译
  3. Greenplum 实时数据仓库实践(1)——数据仓库简介
  4. postgresql 并发访问_postgresql 并发update下导致的死锁问题
  5. 《Wireshark数据包分析实战(第2版)》目录—导读
  6. java 软件开发面试宝典
  7. 零基础边缘端智慧交通训练营 | Lesson 4
  8. CCjump解决:在微信中访问app下载链接提示“已停止访问该网页”
  9. java qq聊天界面_【附源码】用Java写了一个类QQ界面聊天小项目,可在线聊天!...
  10. 没有 XXX 的手册页条目