F - Sugoroku2 (期望dp)
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+mdp[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)相关推荐
- 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_ ...
- F - Sugoroku2(动态规划)
F - Sugoroku2 一个经典的概率期望dp的模型,现在要求从0移动到n,每次等概率移动1到m的距离,有k个点,一旦到达就移动回到0,一旦到达n或超过n游戏结束,求解步数期望. 那么我们dp的时 ...
- luogu P4745 [CERC2017]Gambling Guide(期望DP + 最短路实现)
整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 P4745 [CERC2017]Gambling Guide(期望DP + 最短路实现) Weblin ...
- 【bzoj4318】OSU! 期望dp
题目描述 osu 是一款群众喜闻乐见的休闲软件. 我们可以把osu的规则简化与改编成以下的样子: 一共有n次操作,每次操作只有成功与失败之分,成功对应1,失败对应0,n次操作对应为1个长度为n的0 ...
- 【loj6342】跳一跳 期望dp
题目描述 一个人从 $1$ 开始向 $n$ 跳,在 $i$ 时会等概率跳到 $i,i+1,...,n$ 之一.求从 $1$ 跳到 $n$ 的期望步数. $n\le 10^7$ . 题解 期望dp傻逼题 ...
- 【高斯消元】兼 【期望dp】例题
[总览] 高斯消元基本思想是将方程式的系数和常数化为矩阵,通过将矩阵通过行变换成为阶梯状(三角形),然后从小往上逐一求解. 如:$3X_1 + 2X_2 + 1X_3 = 3$ $ ...
- Luogu P3251 [JLOI2012]时间流逝 期望dp
题面 题面 题解 期望\(dp\)好题! 今年\(ZJOI\)有讲过这题... 首先因为\(T\)只有\(50\),大力\(dfs\)后发现,可能的状态数最多只有\(20w\)左右,所以我们就可以大力 ...
- 【bzoj5197】[CERC2017]Gambling Guide 期望dp+堆优化Dijkstra
题目描述 给定一张n个点,m条双向边的无向图. 你要从1号点走到n号点.当你位于x点时,你需要花1元钱,等概率随机地买到与x相邻的一个点的票,只有通过票才能走到其它点. 每当完成一次交易时,你可以选择 ...
- 【BZOJ】1076 [SCOI2008]奖励关 期望DP+状压DP
[题意]n种宝物,k关游戏,每关游戏给出一种宝物,可捡可不捡.每种宝物有一个价值(有负数).每个宝物有前提宝物列表,必须在前面的关卡取得列表宝物才能捡起这个宝物,求期望收益.k<=100,n&l ...
最新文章
- 给windows装个Mac黑苹果虚拟机
- centos7x64搭建php,2# CentOS 6.7 x64 Apache/PHP/Mariadb环境搭建
- android 开发jni,示例:hello-jni
- js 将时间戳转为日期格式
- SQL语句中ON DUPLICATE KEY UPDATE column=IF(条件,值1,值2 ) 的使用
- linux下 mysql 的root用户忘记密码解决方案
- FASTICA独立成分分析matlab代码实现
- JEE7:展望新时代
- oppo专用计算机,OPPO手机助手
- python for android 安装配置_mac appium for android 环境搭建 (appium python pycharm)
- 泛微oa明细表添加按钮_关于E8,这些快捷方式你必须知道
- Google 开发者账号关联被封后怎么办
- Android TextView水平跑马灯
- Mysql高级命令与概念
- 血与泪的教训: JavaWeb中文乱码问题整合
- PaMIR: Parametric Model-Conditioned Implicit Representation for Image-based Human Reconstruction
- Vue项目中用百度地图实现城市定位
- 【图像融合】基于matlab高分辨率全色图IHS图像融合(含评价指标)【含Matlab源码 2406期】
- Web测试要点(功能、性能、可用性、兼容、安全)
- 浅析医院信息集成平台现状