题目描述

一个人从 $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;
}

最新文章

  1. jdbc java数据库连接 6)类路径读取——JdbcUtil的配置文件
  2. Echart的简单例子
  3. 常用的几个DOS批处理
  4. NOI 题库 1792
  5. Txx考试(codevs 2894)
  6. PropertiesUtil 读取配置文件工具类
  7. Cocos2d-x 让精灵随手指移动起来二(简单实现)
  8. mysql数据库乱码
  9. Jmeter实现WebSocket协议的接口和性能测试方法
  10. Hibernate第六篇【多对多映射、一对一映射】
  11. lxml etree的一个问题
  12. ●BZOJ 3672 [Noi2014]购票
  13. Android NDK pthreads详细使用
  14. js forEach跳出循环
  15. 对象关系映射(ORM)框架GreenDao简介和基本使用
  16. Powershell极速教程-如何在三分钟内编写项目编译脚本
  17. Python学习笔录
  18. nodejs核心技术
  19. 在同一台电脑部署多个Tomcat服务
  20. Docker创建运行多个mysql容器

热门文章

  1. Django视图层详细介绍
  2. html学习第一天
  3. C#随堂
  4. centos7 python2.7.5 升级python3.6.4
  5. Jmeter如何做接口测试
  6. Unity学习笔记(1)
  7. Unity ScriptableObject自定义属性显示
  8. C# 如何使用 RabbitMQ 实现消息收发
  9. Select 、Poll 和 Epoll
  10. 从零开始的Python学习Episode 8——深浅拷贝