F - Sugoroku2

期望dp:fuf_ufu​表示到达终点的期望于是有
fu={0,u≥nf0,u∈Afu+1+⋯+fu+mm+1f_u=\begin{cases} 0,u\ge n \\f_0,u\in A\\ \frac{f_{u+1}+\dots+f_{u+m}}{m}+1 \end{cases}fu​=⎩⎪⎨⎪⎧​0,u≥nf0​,u∈Amfu+1​+⋯+fu+m​​+1​

由于存在返回f0f_0f0​的操作,最终出来一定是一个关于f0f_0f0​的方程,对于每个点维护f0f_0f0​的系数和常数即fu=kf0+bf_u=k f_0+bfu​=kf0​+b

最后解方程即f0=kf0+bf_0=k f_0+bf0​=kf0​+b,显然k=1k=1k=1时无解。

对于更新每一个fu=fu+1+⋯+fu+mm+1f_u= \frac{f_{u+1}+\dots+f_{u+m}}{m}+1fu​=mfu+1​+⋯+fu+m​​+1可以记录后缀和优化

#define IO ios::sync_with_stdio(false);cin.tie();cout.tie(0)
#pragma GCC optimize(2)
#include<set>
#include<map>
#include<cmath>
#include<stack>
#include<queue>
#include<bitset>
#include<random>
#include<bitset>
#include<string>
#include<vector>
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<unordered_map>
#include<unordered_set>
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
typedef pair<ll,int> pli;
typedef pair<int,int> pii;
const ll mod=1e9+7;
const int N=200010;
long double f[N][2];
long double sum[N][2];
bool st[N];
int n,m,k;
int main()
{IO;int T=1;//cin>>T;while(T--){cin>>n>>m>>k;for(int i=1;i<=k;i++){int a;cin>>a;st[a]=1;}f[n][0]=0,f[n][1]=0;for(int i=n-1;i>=0;i--){if(st[i]) f[i][0]=1,f[i][1]=0;else{f[i][0]=(sum[i+1][0]-sum[i+1+m][0])/m;f[i][1]=(sum[i+1][1]-sum[i+1+m][1])/m+1.0;}sum[i][0]=sum[i+1][0]+f[i][0];sum[i][1]=sum[i+1][1]+f[i][1];}if(fabs(f[0][0]-1.0)<1e-6) puts("-1");else printf("%.4llf\n",f[0][1]/(long double)(1.0-f[0][0]));}return 0;
}

训练赛真的垃圾,努力训练
要加油哦~

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

  1. F - Sugoroku2 (期望dp)

    F - Sugoroku2 (期望dp) 概率和期望常用的算法是dp. 思路 本题是从后往前dp,设 d p [ i ] dp[i] dp[i]为从 i i i走到 n n n的期望,目标是 d p ...

  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. [原] 利用Radix树作为Key-Value 键值对的数据路由
  2. js简单的下拉选中效果
  3. Kotlin系列之循环
  4. php Trait 基础应用讲解
  5. 弱引用什么时候被回收_Java基础 强引用、弱引用、软引用、虚引用
  6. ThinkPHP6项目基操(1.环境搭建及ThinkPHP6的安装)
  7. 靠打麻将赢来800万!开家烂店天天跟顾客对着干,年赚569亿!
  8. Android开发笔记(八十五)手机数据库Realm
  9. 蓝桥杯 BASIC-29 基础练习 高精度加法
  10. Android菜鸟成长记1--环境的搭配和第一个项目的构建
  11. 数据库用户管理(增删改查,即CRUD)
  12. python读取超大csv
  13. 用Matlab搭建GUI视频处理工具
  14. 每天2小时,吃透 985博士总结的这套保姆级TensorFlow + PyTorch笔记(20G高清/PPT/代码)
  15. java进阶(1)之Euraka和Feign的结合使用
  16. tp-link无线网卡linux下的驱动,Ubuntu14下安装无线网卡驱动(TP-LINK TL-WN823N)
  17. 软件烧录的测试方法,烧录测试座使用及保养
  18. IDEA离线安装插件
  19. 好玩的黑客游戏(过把黑客的瘾)
  20. PNP三极管工作原理

热门文章

  1. 评价的等级优良差_满意程度等级划分
  2. linux安装grpc占用空间大,grpc linux安装-Go语言中文社区
  3. linux c 数据库访问框架,linux c 开发通用结构,框架
  4. php phpmailer qq邮箱,QQ邮箱利用PHPmailer发送邮件
  5. 服务器虚拟化怎么使用,服务器使用中的误区及建议 服务器虚拟化安装步骤
  6. [JavaWeb-HTML]CSS与html结合方式
  7. LeetCode28 对称的二叉树-简单
  8. 网络原理题+复习资料
  9. python3.6基础知识_python的基础知识
  10. 1190 最小公倍数之和 V2