保命 题解
题目在这里。
下面都设这
n
+
1
n+1
n+1个建筑的编号为
1
1
1到
n
+
1
n+1
n+1。
设
f
i
,
j
f_{i,j}
fi,j
表示第
i
i
i个消火栓放到
j
j
j点的答案。
则
f
i
,
j
=
f
i
−
1
,
k
+
∑
p
=
k
+
1
j
w
p
(
s
j
−
s
p
)
f_{i,j}=f_{i-1,k}+\sum_{p=k+1}^{j}{w_p(s_j-s_p)}
fi,j=fi−1,k+p=k+1∑jwp(sj−sp)
其中
s
i
,
w
i
s_i,w_i
si,wi
分别表示第一个点到第
i
i
i个点的距离及第
i
i
i个点的人数。
然后拆开,得
f
i
,
j
=
f
i
−
1
,
k
+
s
j
∑
p
=
k
+
1
j
w
p
−
∑
p
=
k
+
1
j
w
p
s
p
f_{i,j}=f_{i-1,k}+s_j\sum_{p=k+1}^{j}{w_p}-\sum_{p=k+1}^j{w_ps_p}
fi,j=fi−1,k+sjp=k+1∑jwp−p=k+1∑jwpsp
用前缀和维护
∑
p
=
k
+
1
j
w
p
,
∑
p
=
k
+
1
j
w
p
s
p
\sum_{p=k+1}^{j}{w_p},\sum_{p=k+1}^j{w_ps_p}
p=k+1∑jwp,p=k+1∑jwpsp
即可。
时间复杂度为
O
(
n
2
k
)
O(n^2k)
O(n2k)
可以用斜率优化至
O
(
n
k
)
O(nk)
O(nk)