如图,我们将这个斜率为 $k_i$ 的直线从下往上平移,直到有一个点 $(x_p,y_p)$ 在这条直线上,则有 $b_i=y_p-k_ix_p$ ,这时 $b_i$ 取到最小值。算完 $f_i$ ,我们就把 $(x_i,y_i)$ 这个点加入点集中,以做为新的 DP 决策。那么,我们该如何维护点集?
-容æ\98\93å\8f\91ç\8e°ï¼\8cå\8f¯è\83½è®© $b_i$ å\8f\96å\88°æ\9c\80å°\8få\80¼ç\9a\84ç\82¹ä¸\80å®\9aå\9c¨ä¸\8bå\87¸å£³ä¸\8aã\80\82å\9b æ¤å\9c¨å¯»æ\89¾ $p$ ç\9a\84æ\97¶å\80\99æ\88\91们ä¸\8dé\9c\80è¦\81æ\9e\9a举æ\89\80æ\9c\89 $i-1$ 个ç\82¹ï¼\8cå\8fªé\9c\80è¦\81è\80\83è\99\91å\87¸å\8c\85ä¸\8aç\9a\84ç\82¹ã\80\82è\80\8cå\9c¨æ\9c¬é¢\98ä¸ $k_i$ é\9a\8f $i$ ç\9a\84å¢\9eå\8a è\80\8cé\80\92å\87\8f,因此我们可以单调队列维护凸包。
+容æ\98\93å\8f\91ç\8e°ï¼\8cå\8f¯è\83½è®© $b_i$ å\8f\96å\88°æ\9c\80å°\8få\80¼ç\9a\84ç\82¹ä¸\80å®\9aå\9c¨ä¸\8bå\87¸å£³ä¸\8aã\80\82å\9b æ¤å\9c¨å¯»æ\89¾ $p$ ç\9a\84æ\97¶å\80\99æ\88\91们ä¸\8dé\9c\80è¦\81æ\9e\9a举æ\89\80æ\9c\89 $i-1$ 个ç\82¹ï¼\8cå\8fªé\9c\80è¦\81è\80\83è\99\91å\87¸å\8c\85ä¸\8aç\9a\84ç\82¹ã\80\82è\80\8cå\9c¨æ\9c¬é¢\98ä¸ $k_i$ é\9a\8f $i$ ç\9a\84å¢\9eå\8a è\80\8cé\80\92å¢\9e,因此我们可以单调队列维护凸包。
具体地,设 $K(a,b)$ 表示过 $(x_a,y_a)$ 和 $(x_b,y_b)$ 的直线的斜率。考虑队列 $q_l,q_{l+1},\ldots,q_r$ ,维护的是下凸壳上的点。也就是说,对于 $l<i<r$ ,始终有 $K(q_{i-1},q_i) < K(q_i,q_{i+1})$ 成立。