【loj6342】跳一跳 期望dp
生活随笔
收集整理的這篇文章主要介紹了
【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的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: jsp运算符
- 下一篇: CSS基础——position位置属性