题意

在你的面前有n个门,通过有的门在si的时间后走出迷宫,有的门会在si的时间后返回原地。你可以记住你之前走过的k个门,在下一次选择的时候不选那些走不出去的门。求走出迷宫的期望时间。

思路

概率dp。定义f[i]为已经记住了i个门之后的期望剩余时间。
定义s1表示所有能够走出的门的花费时间的总和,s2表示所有走不出去的门的时间总和,s为走不出去的门的数量。
f[k]=s1n−k+s−ks∗s2+(s−k)∗f[k]n−kf[k]=\frac{s1}{n-k}+\frac{\frac{s-k}{s}*s2+(s-k)*f[k]}{n-k}f[k]=n−ks1​+n−kss−k​∗s2+(s−k)∗f[k]​

当i<k时
f[i]=s1n−i+s−is∗s2+(s−i)∗f[i+1]n−if[i]=\frac{s1}{n-i}+\frac{\frac{s-i}{s}*s2+(s-i)*f[i+1]}{n-i}f[i]=n−is1​+n−iss−i​∗s2+(s−i)∗f[i+1]​

因此,求出f[k]后递推求解,f[0]即为最终答案。
代码:

#include <bits/stdc++.h>using namespace std;#define ll long long
#define ld long double
#define ull unsigned long long
#define __ ios::sync_with_stdio(0);cin.tie(0);cout.tie(0)const int maxn = 5e5 + 10;
const int maxm = 5e5 + 10;
const ll mod = 1e9 + 7;
const double eps = 1e-10;ld f[110], w[110];
int n, K, a[110];int main() {__;int _;cin >> _;for (int sce = 1; sce <= _; sce++) {cin >> n >> K;int s1 = 0, s2 = 0, s = 0;for (int i = 1; i <= n; ++i) {cin >> a[i];if (a[i] > 0)s1 += a[i];else {s2 -= a[i];++s;}}cout << "Case " << sce << ": ";if (n == s) {cout << "-1" << endl;continue;}K = min(K, s);memset(w, 0, sizeof w);memset(f, 0, sizeof f);for (int i = 0; i <= K; ++i) {if (s == 0)w[i] = 0;else w[i] = (ld) s2 * (s - i) / (ld) s;}f[K] = (ld) s1 / (ld) (n - s) + (ld) w[K] / (ld) (n - s);for (int i = K - 1; i >= 0; --i) {f[i] = s1 / (ld) (n - i) + (w[i] + (ld) (s - i) * f[i + 1]) / (ld) (n - i);}cout << fixed << setprecision(10) << f[0] << endl;}return 0;
}

LightOJ - 1395相关推荐

  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 1395 A Dangerous Maze (II) (概率dp)

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

  4. kuangbin带你飞专题合集

    题目列表 [kuangbin带你飞]专题一 简单搜索 [kuangbin带你飞]专题二 搜索进阶 [kuangbin带你飞]专题三 Dancing Links [kuangbin带你飞]专题四 最短路 ...

  5. 算法学习经典例题整理

    陆续会对本篇博客进行更新! 搜索:https://vjudge.net/contest/292597 区间DP:https://vjudge.net/contest/293892 树状背包:https ...

  6. [kuangbin]各种各样的题单

    [kuangbin]各种各样的题单 专题1 简单搜索 POJ 1321 POJ 2251 POJ 3278 POJ 3279 POJ 1426 POJ 3126 POJ 3087 POJ 3414 F ...

  7. kuangbin带你飞 专题1-23 题单

    kuangbin大神,对于打过ACM比赛的ACMer,无人不知无人不晓. 在此,附上vjudge平台上一位大神整理的[kuangbin带你飞]专题目录链接. [kuangbin带你飞专题目录1-23] ...

  8. 老鱼的-kuangbin专题题解

    kuangbin专题问题一览 专题一 简单搜索 POJ 1321 棋盘问题 POJ 2251 Dungeon Master POJ 3278 Catch That Cow POJ 3279 Flipt ...

  9. Pairs Forming LCM LightOJ - 1236

    Pairs Forming LCM LightOJ - 1236 题意 问共有多少组数的最大公约数是n 分析 组合数学 ,唯一分解定理 参考代码 int Prime[670000]; const in ...

最新文章

  1. R语言通过loess去除某个变量对数据的影响
  2. 设计模式学习---策略模式
  3. Python 中的*args和**kwargs
  4. php调用root权限,PHP执行root权限程序
  5. 第五章 PX4-Pixhawk-GPS解析
  6. 数据分析常用Python库:数值计算、可视化、机器学习等领域
  7. Server Core 的部署与管理
  8. [.net]c#登陆实现验证码-图形编程
  9. stl之map 排序
  10. c语言入门教程--1编译器
  11. TI Cortex-A9 AM437x系列-创龙TL437x-EVM开发板详解
  12. 【技术贴】ppt2003更换图片|更换带有动作特效的图片|替换ppt图片
  13. 使用RT-Thread Studio DIY 迷你桌面时钟(一)| 基于STM32芯片创建HelloWorld工程
  14. Idel插件jrebel安装以及破解教程
  15. [Trans 系列之一]TransE算法(Translating Embedding)
  16. 如何对图片批量重命名?
  17. 与判别网络对抗的生成网络 (Generative Adversarial Nets)
  18. 5G+AI技术到底是什么样的?一篇漫画告诉你答案
  19. ArcGIS对比MapInfo
  20. wps里的html怎么保存,用WPS 2012保存网页内容的实用方法

热门文章

  1. 2021-01-22 Science对于“Misused images”图片误用的报道
  2. 7-45 小何的旅行I分数 25
  3. 字节跳动推出在线医疗App“小荷” 品牌域名或要另辟蹊径?
  4. 【offerMe--面经必备】---京东面经分享(包含答案)
  5. R_数据视觉化处理_初阶_02
  6. 后OA时代:流程再造
  7. 基于微信小程序的音乐播放器设计
  8. php理论掌握太少,科学网—我为什么反对让学生过早地选课和选考 - 冯大诚的博文...
  9. three.js网页demo展示
  10. DSL 领域特定语言