自己推的好像有一点点麻烦,而且和现有题解相比都要麻烦……
但是只是一道可以用初中数学知识解决的数学题。
题目很显然可以转化为:有 1 到 n 共 n 个点,一个人在点 x,每次等概率向左或向右走 1 个点,求走出这 n 个点(即到 0 或 n+1 )的期望步数。(此句中的 n 与题目的 n 不同)
考虑设 fi 表示在第 i 个点的期望步数,显然地:
f0=fn+1=0
由对称性:
fi=fn−i+1
根据期望的定义可知:
fi=12(fi−1+fi+1)+1(1≤i≤n)
稍微转化一下:
2×fi=fi−1+fi+1+2
(fi+1−fi)−(fi−fi−1)=−2
所以说 f 的二阶差分一个非零常数 −2。
设函数 g 为 f 的差分,即 gi=fi−fi−1。继续推:
gi+1−gi=−2
gi=g1−2×(i−1)
由于 fi=gi+fi−1,带入 gi:
fi=f1−2×(i−1)+fi−1
当 i=n+1 时:
fn+1=f1−2×n+fn
0=2×f1−2×n
f1=n
再推:
fi=i∑j=1gj
代入 gj:
fi=i∑j=1(f1−2×(j−1))
fi=i×f1−i×(i−1)
由于 f1=n,代入就得到最终答案:
fi=−i2+(n+1)×i
所以代入,对于飞入坐标 x,上一个虫洞坐标 l,下一个虫洞坐标 r,答案为:
ans=−(x−l)2+(r−l)×(x−l)
ans=(r−x)×(x−l)
代码已经很简单了,不必放了吧。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 张高兴的大模型开发实战:(一)使用 Selenium 进行网页爬虫
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构