F - Sugoroku2 (期望dp)

概率和期望常用的算法是dp

思路

本题是从后往前dp,设 d p [ i ] dp[i] dp[i]为从 i i i走到 n n n的期望,目标是 d p [ 0 ] dp[0] dp[0],已知 d p [ i ] = 0 , ( i ≥ n ) dp[i]=0,(i\ge n) dp[i]=0,(i≥n)。
递推方程为: d p [ i ] = ∑ j = i + 1 i + m d p [ j ] m + 1 dp[i]=\dfrac{\sum\limits_{j=i+1}^{i+m} dp[j]}{m}+1 dp[i]=mj=i+1∑i+m​dp[j]​+1
如果位置 j j j不能走,则 d p [ j ] = d p [ 0 ] dp[j]=dp[0] dp[j]=dp[0],因此我们只需要所有的 d p [ i ] dp[i] dp[i]都表示成 k × d p [ 0 ] + b k\times dp[0]+b k×dp[0]+b的形式,最终我们只需求解 d p [ 0 ] = k × d p [ 0 ] + b → d p [ 0 ] = b 1 − k dp[0]=k\times dp[0]+b\rightarrow dp[0]=\dfrac{b}{1-k} dp[0]=k×dp[0]+b→dp[0]=1−kb​,当 ( 1 − k ) < 1 0 − 6 (1-k)<10^{-6} (1−k)<10−6即分母为0是无解的。

时间复杂度: O ( n ) O(n) O(n)


代码

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=2e5+5,M=2e4+5,inf=0x3f3f3f3f,mod=1e9+7;
#define mst(a,b) memset(a,b,sizeof a)
#define PII pair<int,int>
#define fi first
#define se second
#define pb push_back
struct node{long double k,b;
}f[N],suf[N];
node operator +(node i,node j){return {i.k+j.k,i.b+j.b};
}
node operator -(node i,node j){return {i.k-j.k,i.b-j.b};
}
node operator /(node i,double j){return {i.k/j,i.b/j};
}
int n,m,k;
bitset<N>vis;
int main(){scanf("%d%d%d",&n,&m,&k);for(int i=1,x;i<=k;i++) scanf("%d",&x),vis[x]=1;for(int i=n-1;~i;i--){if(vis[i]) f[i]={1,0};else f[i]=(suf[i+1]-suf[i+m+1])/m+(node){0,1};suf[i]=suf[i+1]+f[i];}if(fabs(f[0].k-1)<1e-6) puts("-1");else printf("%.4Lf\n",f[0].b/(1-f[0].k)); return 0;
}

F - Sugoroku2 (期望dp)相关推荐

  1. F - Sugoroku2(期望dp)

    F - Sugoroku2 期望dp:fuf_ufu​表示到达终点的期望于是有 fu={0,u≥nf0,u∈Afu+1+⋯+fu+mm+1f_u=\begin{cases} 0,u\ge n \\f_ ...

  2. F - Sugoroku2(动态规划)

    F - Sugoroku2 一个经典的概率期望dp的模型,现在要求从0移动到n,每次等概率移动1到m的距离,有k个点,一旦到达就移动回到0,一旦到达n或超过n游戏结束,求解步数期望. 那么我们dp的时 ...

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

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

  4. 【bzoj4318】OSU! 期望dp

    题目描述 osu 是一款群众喜闻乐见的休闲软件.  我们可以把osu的规则简化与改编成以下的样子:  一共有n次操作,每次操作只有成功与失败之分,成功对应1,失败对应0,n次操作对应为1个长度为n的0 ...

  5. 【loj6342】跳一跳 期望dp

    题目描述 一个人从 $1$ 开始向 $n$ 跳,在 $i$ 时会等概率跳到 $i,i+1,...,n$ 之一.求从 $1$ 跳到 $n$ 的期望步数. $n\le 10^7$ . 题解 期望dp傻逼题 ...

  6. 【高斯消元】兼 【期望dp】例题

    [总览] 高斯消元基本思想是将方程式的系数和常数化为矩阵,通过将矩阵通过行变换成为阶梯状(三角形),然后从小往上逐一求解. 如:$3X_1 + 2X_2 + 1X_3 = 3$ $           ...

  7. Luogu P3251 [JLOI2012]时间流逝 期望dp

    题面 题面 题解 期望\(dp\)好题! 今年\(ZJOI\)有讲过这题... 首先因为\(T\)只有\(50\),大力\(dfs\)后发现,可能的状态数最多只有\(20w\)左右,所以我们就可以大力 ...

  8. 【bzoj5197】[CERC2017]Gambling Guide 期望dp+堆优化Dijkstra

    题目描述 给定一张n个点,m条双向边的无向图. 你要从1号点走到n号点.当你位于x点时,你需要花1元钱,等概率随机地买到与x相邻的一个点的票,只有通过票才能走到其它点. 每当完成一次交易时,你可以选择 ...

  9. 【BZOJ】1076 [SCOI2008]奖励关 期望DP+状压DP

    [题意]n种宝物,k关游戏,每关游戏给出一种宝物,可捡可不捡.每种宝物有一个价值(有负数).每个宝物有前提宝物列表,必须在前面的关卡取得列表宝物才能捡起这个宝物,求期望收益.k<=100,n&l ...

最新文章

  1. 给windows装个Mac黑苹果虚拟机
  2. centos7x64搭建php,2# CentOS 6.7 x64 Apache/PHP/Mariadb环境搭建
  3. android 开发jni,示例:hello-jni
  4. js 将时间戳转为日期格式
  5. SQL语句中ON DUPLICATE KEY UPDATE column=IF(条件,值1,值2 ) 的使用
  6. linux下 mysql 的root用户忘记密码解决方案
  7. FASTICA独立成分分析matlab代码实现
  8. JEE7:展望新时代
  9. oppo专用计算机,OPPO手机助手
  10. python for android 安装配置_mac appium for android 环境搭建 (appium python pycharm)
  11. 泛微oa明细表添加按钮_关于E8,这些快捷方式你必须知道
  12. Google 开发者账号关联被封后怎么办
  13. Android TextView水平跑马灯
  14. Mysql高级命令与概念
  15. 血与泪的教训: JavaWeb中文乱码问题整合
  16. PaMIR: Parametric Model-Conditioned Implicit Representation for Image-based Human Reconstruction
  17. Vue项目中用百度地图实现城市定位
  18. 【图像融合】基于matlab高分辨率全色图IHS图像融合(含评价指标)【含Matlab源码 2406期】
  19. Web测试要点(功能、性能、可用性、兼容、安全)
  20. 浅析医院信息集成平台现状

热门文章

  1. springmvc字符 中文乱码问题
  2. 基于Python的Pygame带背景音乐的五子棋游戏的设计与实现
  3. python刷网_Python制作刷网页流量工具的代码实例
  4. 2021-06-08 海明距离(汉明距离)
  5. python 数据类型转换 及 字符串 转int 报错处理
  6. 软件工程 科学出版社 郑逢斌主编 第1章 软件工程概述 课后习题答案
  7. Windows后台运行并启动Frpc客户端界面
  8. JLU吉林大学2022-2023年度第1学期软件学院《计算机网络》真题回顾(2020级)
  9. 一文读懂 Bias(偏差)、Error(误差)、Variance(方差)
  10. ubuntu更换镜像源