Codeforces Round #688(Div 2) D. Checkpoints
题目链接:https://codeforces.com/contest/1453/problem/D
思路
第一步,先推导1,0,0,……,0,就是1后面跟了n-1个0的时候
所需要的期望步数
封闭式推导
fn代表从n关开始直接通关需要的步数的期望
n为1的情况,即就只有一个1
f1=12×1+12×(f1+1)
整理得f1=2
第一关时,你有一半的概率通关,有一半的概率回到自身重新开始
n为2的情况,1,0
f1=12×(f1+1)+12×(f2+1)
f2=12×1+12×(f1+1)
整理得f1=6
第一关时,你有一半的概率到达第二关,有一半的概率回到自身重新开始
第二关时,你有一半的概率通关,有一半的概率回到第一关重新开始
这样我们就可以进行归纳总结
把每个式子化简一下
f1=12f1+12f2+1
f2=12f1+12f3+1
f3=12f1+12f4+1
……
fi=12f1+12fi+1+1
……
fn=12f1+1
然后自己整理一下,就是两个等比数列的和
就得到了f1的封闭式
对于任意情况的n时,f1=2n+1−2
思路推进
推导出1,……,0,0的期望公式之后,我们如果再后面继续添加1,0,……,0这样一个序列
那么他的期望是直接相加的,因为他是一个复活点(检查点),跟你前面的序列一点关系都没有
所以你无论怎么增加都是一个2的倍数,这样也就得到奇数的时候是无解的
代码实现
我是一颗水灵灵的大白菜,
农民伯伯辛勤的耕种着我,
把我带到了菜市场
拿着喷头对着我浇水,
还一边说“好菜啊好菜”
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 对象命名为何需要避免'-er'和'-or'后缀
· SQL Server如何跟踪自动统计信息更新?
· AI与.NET技术实操系列:使用Catalyst进行自然语言处理
· 分享一个我遇到过的“量子力学”级别的BUG。
· Linux系列:如何调试 malloc 的底层源码
· 对象命名为何需要避免'-er'和'-or'后缀
· JDK 24 发布,新特性解读!
· C# 中比较实用的关键字,基础高频面试题!
· .NET 10 Preview 2 增强了 Blazor 和.NET MAUI
· SQL Server如何跟踪自动统计信息更新?