(草稿)luogu CF311B Cats Transport

探讨了在特定条件下,如何通过动态规划算法优化多个人接取多只猫的最短等待时间问题。分析了猫的等待时间计算公式,并通过斜率优化技巧实现了算法效率的提升。

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

背景:

h e h e . . . hehe... hehe...
暂时还没推完,勿看。

题目传送门:

https://www.luogu.org/problemnew/show/CF311B

题意:

n n n个山丘(山丘 i i i i − 1 i-1 i1之间的距离为 d i d_i di), m m m只猫, p p p个人。每一只猫会在某一个山丘玩到 t i m e i time_i timei时刻,然后等待某一个人(第一个遇到的人)将其抱走。求猫最短的等待时间。规定人的速度是 1 m / s 1m/s 1m/s,且抱猫不用时间,且人不会停下来。

思路:

考虑 猫 的 等 待 时 间 = 人 出 发 时 间 + 出 发 点 到 这 里 的 距 离 − 猫 出 现 的 时 间 猫的等待时间=人出发时间+出发点到这里的距离-猫出现的时间 =+
那么我们可以与处理出 T i = 出 发 点 到 这 里 的 距 离 − 猫 出 现 的 时 间 T_i=出发点到这里的距离-猫出现的时间 Ti=,然后可以 d p dp dp

设 f i , j 设f_{i,j} fi,j表示第 i i i个人接到前 j j j只猫的后,等待时间和的最小值。
d i s i dis_i disi表示 i i i到起点的距离。
T i = d i s i − t i m e i T_i=dis_i-time_i Ti=disitimei
f i , j = min ⁡ k = 1 j − 1 f i , k + ( j − k ) ∗ T I f_{i,j}=\min_{k=1}^{j-1}f_{i,k}+(j-k)*T_I fi,j=mink=1j1fi,k+(jk)TI
当前没有单调性?只需在 d p dp dp前按照 T T T升序即可。

最后,发现这有单调性,便得到斜率方程: f i , k − f i , l k − l > T i \frac{f_{i,k}-f_{i,l}}{k-l}>T_i klfi,kfi,l>Ti
好像有点怪???
套个斜率优化即可。
完结撒花。

代码:

goto
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值