青蛙 GDUT 院赛(概率)

该博客探讨了一只青蛙在水平轴上跳跃的问题,其中每次跳跃距离是[L,R]内的随机整数。青蛙无限次跳跃,求坐标n处的石头被踩中的概率。通过数学分析,得出动态规划公式p[x] = (p[x-R]+p[x-R-1]+…+p[x-L]) * pk,用此优化方法降低算法复杂度至O(n)。" 135109359,9803657,Qt自定义代理控件:QTableView中使用SpinBox,"['Qt开发', 'GUI', '数据库', '开发语言']
摘要由CSDN通过智能技术生成

题目:
有无限多个石头位于水平轴的非负整数位置处,一只青蛙初始位于坐标为0处的石头上,它将要往水平轴的正方向跳跃。每个非负整数位置处都有一个石头,也就是说任意两个相邻石头的距离都为1。青蛙每次跳跃会跳过k个石头(从坐标j会跳跃到坐标j+k),我们称跳跃距离为k,k的取值是[L,R]的一个随机值,也就是说对于每次跳跃,跳跃距离为[L,R]中的整数值L≤k≤R的概率为1/(R-L+1).

举个例子,若L=2,R=4,则青蛙的第一次跳跃落在位置2、3、4的概率各为1/3.

在这个问题中,青蛙会进行无数次跳跃,现在的问题是,位于坐标n的石头被青蛙踩中的概率是多少?
输入包含一行,三个整数n、L、R分别表示所求概率的坐标n,青蛙跳跃的范围[L,R].(1≤n≤1e6,1≤L≤R≤1e6)
思路:
p[x] = (p[x-R]+p[x-R-1]+…+p[x-L]) * pk那么我们只需要维护(p[x-R]+p[x-R-1]+…+p[x-L])的值就可以减少一层循环,复杂度 O(n)。

#include<bits/stdc++.h>
#define ll long long<
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值