题目描述

一行有 N N N个格子,编号为 1 , 2 , … , N 1,2,\dots,N 1,2,…,N,你站在格子 1 1 1处。前 N − 1 N-1 N−1个格子中,每个格子中都有一枚特殊的骰子。第 i i i个格子上的骰子,标有 0 , 1 , … , A i 0,1,\dots,A_i 0,1,…,Ai​这些数。你每到一个格子,就会掷一次骰子,如果骰子掷出为 y y y,你当前在 i i i号格子,那么你可以跳到第 i + y i+y i+y号格子。骰子上的每一个数都是等概率出现的。问你走到第 N N N个格子时,期望要丢多少次骰子?答案对 998244353 998244353 998244353取模。对期望的取模的操作为:期望是一个分数,你先化简分数,分子乘上分母关于 998244353 998244353 998244353的逆元,得到一个整数,输出该整数。

输入格式

第一行输出 n n n。第二行有 n − 1 n-1 n−1个数,为 A 1 , A 2 , … , A n − 1 A_1,A_2,\dots,A_{n-1} A1​,A2​,…,An−1​

输出格式

输出答案

输入样例1

3
1 1

输出样例1

4

输出样例2

5
3 1 2 1

输出样例2

332748122

数据范围

2 ≤ N ≤ 2 ∗ 1 0 5 , 1 ≤ A i ≤ N − i ( 1 ≤ i ≤ N − 1 ) 2\leq N\leq 2*10^5,1\leq A_i\leq N-i(1\leq i\leq N-1) 2≤N≤2∗105,1≤Ai​≤N−i(1≤i≤N−1)

题解

这是一道期望DP,设 f i f_i fi​表示走到第 i i i个格子时期望要走多少次才能到第 N N N个格子, f N = 0 f_N=0 fN​=0,可以列出转移式:

f i = ∑ j = i i + A i f j A i + 1 + 1 f_i=\frac{\sum\limits_{j=i}^{i+A_i}f_j}{A_i+1}+1 fi​=Ai​+1j=i∑i+Ai​​fj​​+1

在第 i i i个格子,等概率到第 i i i到 i + A i i+A_i i+Ai​个格子。但是,观察可得, f i f_i fi​的转移式是包括 f i f_i fi​本身的,所以我们需要做一些调整。两边同时减去 f i A i + 1 \frac{f_i}{A_i+1} Ai​+1fi​​得

A i A i + 1 f i = ∑ j = i + 1 i + A i f j A i + 1 + 1 \frac{A_i}{A_i+1}f_i=\frac{\sum\limits_{j=i+1}^{i+A_i}f_j}{A_i+1}+1 Ai​+1Ai​​fi​=Ai​+1j=i+1∑i+Ai​​fj​​+1

两边同时乘 A i + 1 A i \frac{A_i+1}{A_i} Ai​Ai​+1​得

f i = ∑ j = i + 1 i + A i f j A i + A i + 1 A i f_i=\frac{\sum\limits_{j=i+1}^{i+A_i}f_j}{A_i}+\frac{A_i+1}{A_i} fi​=Ai​j=i+1∑i+Ai​​fj​​+Ai​Ai​+1​

用前缀和维护 f f f数组,即可线性求解。

code

#include<bits/stdc++.h>
using namespace std;
int n;
long long mod=998244353,a[200005],f[200005],sum[200005];
long long mi(long long t,long long v){if(v==0) return 1;long long re=mi(t,v/2);re=re*re%mod;if(v&1) re=re*t%mod;return re;
}
int main()
{scanf("%d",&n);for(int i=1;i<n;i++){scanf("%lld",&a[i]);}for(int i=n-1;i>=1;i--){f[i]=(sum[i+1]-sum[i+a[i]+1]+mod)%mod;f[i]=(f[i]+a[i]+1)%mod;f[i]=f[i]*mi(a[i],mod-2)%mod;sum[i]=(sum[i+1]+f[i])%mod;}printf("%lld",f[1]);return 0;
}

掷骰子题解(期望DP)相关推荐

  1. LeetCode 1223. 掷骰子模拟(DP)

    1. 题目 有一个骰子模拟器会每次投掷的时候生成一个 1 到 6 的随机数. 不过我们在使用它时有个约束,就是使得投掷骰子时,连续 掷出数字 i 的次数不能超过 rollMax[i](i 从 1 开始 ...

  2. LeetCode 1155. 掷骰子的N种方法(DP)

    1. 题目 这里有 d 个一样的骰子,每个骰子上都有 f 个面,分别标号为 1, 2, -, f. 我们约定:掷骰子的得到总点数为各骰子面朝上的数字的总和. 如果需要掷出的总点数为 target,请你 ...

  3. LightOJ 1151 Snakes and Ladders (期望DP + 高斯消元)

    Description 'Snakes and Ladders' or 'Shap-Ludu' is a game commonly played in Bangladesh. The game is ...

  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. Luogu P3251 [JLOI2012]时间流逝 期望dp

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

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

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

  8. leetcode - 1223. 掷骰子模拟

    1223. 掷骰子模拟 有一个骰子模拟器会每次投掷的时候生成一个 111 到 666 的随机数. 不过我们在使用它时有个约束,就是使得投掷骰子时,连续 掷出数字 iii 的次数不能超过 rollMax ...

  9. 【poj2096】Collecting Bugs 期望dp

    题目描述 Ivan is fond of collecting. Unlike other people who collect post stamps, coins or other materia ...

最新文章

  1. 【Angular4】英雄指南demo
  2. 转载:JAVA中获取项目文件路径
  3. java script w3c study notes
  4. java基础知识总结,绝对经典
  5. c语言折半查找递归程序,C语言数据结构中二分查找递归非递归实现并分析
  6. css3 线条出现动画效果,CSS3实现的线条波浪动画效果
  7. 【CyberSecurityLearning 6】IIS之WEB服务器和FTP服务器
  8. redis pool
  9. 前端框架Vue——vue-i18n ,vue项目中如何实现国际化,$t的用法
  10. 限免下载!揭秘你不知道的计算机“进化论”
  11. 必须掌握的Python技巧(一)
  12. 嵌入式基础面八股文——并发,同步,异步,互斥,阻塞,非阻塞的理解(2)
  13. Not a git repository (or any of the parent directories): .git
  14. 黑塞矩阵(海森矩阵,Hessian Matrix)与牛顿法最优化
  15. tcptracerte参数_CCNA安全题库
  16. 90后程序英雄季逸超
  17. 补单平台开发搭建源码_补单系统开发搭建IDEA导入jdk8源码学习(报错解决方案)
  18. Oracle数据库cmd登陆
  19. 软件测试入职工作流程
  20. android图片资源加密解密,[原创]cocos2d游戏图片资源解密

热门文章

  1. 反卷积的实现原理(一)
  2. 查看和删除Java证书
  3. 跳槽违反《竞业协议》,赔偿腾讯 97.6 万元。。
  4. 极简主义设计的魅力在哪里
  5. 我见过的那些奇葩面试官......
  6. 原来学计算机的真的不会修电脑...
  7. python3.x与python2.x共存
  8. 阿里巴巴java方向笔试题 带详细答案
  9. Iphone--幻灯片效果+背景音乐
  10. 英文好词好句[论文向]