P5914 MOS 题解
一道练习贪心证明的好题。
绝大多数题解只是点出了以下结论:
要么最快的带最慢的;要么最慢的带次慢的。
并没有给出证明。我就补上这个证明。
为了证明这个贪心结论,我们先证明几个引理。
引理一:每次将火把带回来的,一定是对岸最快的。
引理一证明:如果回来的不是对岸最快的,让对岸最快的人代替这个回来的人的一切行动,发现答案至少不差。
引理二:最慢的人要么和最快的人一起过桥,要么和次慢的人一起过桥。
引理二证明:
为了方便表述,记最快的人为
设
我们有一个调整法的思路:让
显然这样调整后这两次过桥的时间总和变少了。但是现在就得证是错误的。因为我们不确定改变过桥顺序是否会影响其他的过桥。
我们这样调整后唯一可能造成的影响是:如果我们希望
在这种情形下,尝试证明
假设
综上所述,最慢的人每次过桥,要么和最快的人一起,要么和次慢的人一起。
最后的结论:要么
证明:考虑
如果
如果我们先让
以上我们证明了这种方法的正确性。如果我还有考虑不周的地方,欢迎评论指出。
代码就不贴了。有了这个结论,每次看一下送走当前
给个关注呗
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!