背景:
h
e
h
e
.
.
.
hehe...
hehe...
暂时还没推完,勿看。
题目传送门:
https://www.luogu.org/problemnew/show/CF311B
题意:
有
n
n
n个山丘(山丘
i
i
i与
i
−
1
i-1
i−1之间的距离为
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=disi−timei。
则
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=1j−1fi,k+(j−k)∗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
k−lfi,k−fi,l>Ti。
好像有点怪???
套个斜率优化即可。
完结撒花。
代码:
goto