(草稿)luogu CF311B Cats Transport

背景:

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

你可能感兴趣的:(#,斜率优化)