欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

【loj6342】跳一跳 期望dp

发布时间:2025/7/14 编程问答 37 豆豆
生活随笔 收集整理的这篇文章主要介绍了 【loj6342】跳一跳 期望dp 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

题目描述

一个人从 $1$ 开始向 $n$ 跳,在 $i$ 时会等概率跳到 $i,i+1,...,n$ 之一。求从 $1$ 跳到 $n$ 的期望步数。

$n\le 10^7$ 。


题解

期望dp傻逼题

设 $f[i]$ 表示从 $i$ 跳到 $n$ 的期望步数,那么有 $f[i]=\frac{\sum\limits_{j=i}^n f[j]}{n-i+1}+1=\frac{\sum\limits_{j=i+1}^nf[j]}{n-i}+1$ ,维护后缀和转移即可。

时间复杂度 $O(n)$ 

由于卡内存,因此逆元必须用int存储, $f$ 和 $s$ 需要使用滚动数组。

#include <cstdio> #define N 10000010 #define mod 1000000007 int inv[N]; int main() {int n , i;long long f , s = 0;scanf("%d" , &n);inv[1] = 1;for(i = 2 ; i <= n ; i ++ ) inv[i] = 1ll * (mod - mod / i) * inv[mod % i] % mod;for(i = n - 1 ; i ; i -- ) f = ((s + 1) * inv[n - i] + 1) % mod , s = (s + f) % mod;printf("%lld\n" , f);return 0; }

 

转载于:https://www.cnblogs.com/GXZlegend/p/8625991.html

《新程序员》:云原生和全面数字化实践50位技术专家共同创作,文字、视频、音频交互阅读

总结

以上是生活随笔为你收集整理的【loj6342】跳一跳 期望dp的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。