F - Sugoroku2(期望dp)
F - Sugoroku2
由于存在返回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)相关推荐
- F - Sugoroku2 (期望dp)
F - Sugoroku2 (期望dp) 概率和期望常用的算法是dp. 思路 本题是从后往前dp,设 d p [ i ] dp[i] dp[i]为从 i i i走到 n n n的期望,目标是 d p ...
- 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 ...
最新文章
- [原] 利用Radix树作为Key-Value 键值对的数据路由
- js简单的下拉选中效果
- Kotlin系列之循环
- php Trait 基础应用讲解
- 弱引用什么时候被回收_Java基础 强引用、弱引用、软引用、虚引用
- ThinkPHP6项目基操(1.环境搭建及ThinkPHP6的安装)
- 靠打麻将赢来800万!开家烂店天天跟顾客对着干,年赚569亿!
- Android开发笔记(八十五)手机数据库Realm
- 蓝桥杯 BASIC-29 基础练习 高精度加法
- Android菜鸟成长记1--环境的搭配和第一个项目的构建
- 数据库用户管理(增删改查,即CRUD)
- python读取超大csv
- 用Matlab搭建GUI视频处理工具
- 每天2小时,吃透 985博士总结的这套保姆级TensorFlow + PyTorch笔记(20G高清/PPT/代码)
- java进阶(1)之Euraka和Feign的结合使用
- tp-link无线网卡linux下的驱动,Ubuntu14下安装无线网卡驱动(TP-LINK TL-WN823N)
- 软件烧录的测试方法,烧录测试座使用及保养
- IDEA离线安装插件
- 好玩的黑客游戏(过把黑客的瘾)
- PNP三极管工作原理
热门文章
- 评价的等级优良差_满意程度等级划分
- linux安装grpc占用空间大,grpc linux安装-Go语言中文社区
- linux c 数据库访问框架,linux c 开发通用结构,框架
- php phpmailer qq邮箱,QQ邮箱利用PHPmailer发送邮件
- 服务器虚拟化怎么使用,服务器使用中的误区及建议 服务器虚拟化安装步骤
- [JavaWeb-HTML]CSS与html结合方式
- LeetCode28 对称的二叉树-简单
- 网络原理题+复习资料
- python3.6基础知识_python的基础知识
- 1190 最小公倍数之和 V2