题解——Noip2018普及组3摆渡车

这篇博客详细介绍了NOIP2018普及组中关于摆渡车问题的解题思路。作者通过解释dp算法,讨论了j的取值范围(j<T1+T2<2m)以及状态转移的方法,包括三种不同的转移情况,并给出了O(nm^2)的时间复杂度分析。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目在这里

感谢Green_Hand的题解让我这个25分的蒟蒻终于懂得了这一题

首先算法是dp,是个人都想的出来
f[i][j]表示第i个人等待时间为j的时候前i个人的最小等待时间(太强了)‘

j的取值范围?

由题可知,若车在人大附中停了m分钟,那么不如在到人大附中时先送走一批人(即便当时没人),所以停车时间T1<m

设一个人等到车从人民大学回来的时间为T2
因为车往返一次只需m分钟,所以T2<m

综上,一个人等车的时间

j=T1+T2<2m
该如何转移?

若下一个人能赶上当次车(即t[i]+j>=t[i+1]), 则将f[i][j]+t[i]+j-t[i+1]转移至f[i+1][t[i]+j-t[i+1]];
情况一

若下一个人在当次车回来之前开始等车(即t[i]+j+m>=t[i+1]), 则枚举车回来后停的时间k, 用f[i][j]+t[i]+j+m+k-t[i+1]转移f[i+1][t[i]+j+m+k-t[i+1]];
在这里插入图片描述

若下一个人在当次车回来之后才到(即t[i]+j+m<t[i+1]),则枚举下 一个人等待的时间k,并用f[

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值