斜率优化选做

APIO2010 特别行动队

[frac{f_j+a imes sum_j^2+b imes sum_j-f_k-a imes sum_k^2-b imes sum_k}{sum_j-sum_k} >2asum_x ]

转移点 (j,k) ,当前点 (x) ,右侧是单调降的

如果 (j>k) 且上式成立,则 (j)(k)

元素关系单调降的单调队列(即一个上凸壳)

弹栈:

如果队首的两个点的斜率大于 (2asum_x),就弹

队尾就是满足单调降就好了

ZJOI2007 仓库建设

(f_x=(minlimits^{x-1}_ {i=1} f_i-s1_i imes dis_y+s2_i)+s1_y imes dis_y-s2_y)

其中:

[s1_x=sum ^{x}_ {i=1}p_i s2_x=sum_{i=1}^x p_i imes dis_i ]

如果 (i<j)

[frac{f_i-f_j+s2_i-s2_j}{s1_i-s1_j}>dis_x ]

(i) 点则不优

右边是单调增的,所以是个下凸壳

[USACO08MAR]Land Acquisition G

首先用排序把矩形留下有用的部分

然后元素是满足 (x) 单调减,(y) 单调增

然后就可以斜率优化了

[frac{f_j-f_k}{x_{k+1}-x_{j+1}}>y_i ]

右面是单调增的,维护下凸壳即可

SDOI2016征途

先推方差

把式子推成:

[m^2s^2=(m sumlimits _{i=1}^m d_i^2)-(sum^ m _{i=1} v_i)^2 ]

所以这个式子最后就是求 (sumlimits_{j=1}^i d_i^2) 的最小值

其中 (d_i) 表示第 (i) 天走的路程

(f_{i,j}) 为前 (i) 段分 (j) 天走的最小方差

这里我们对于每个 (j) 进行计算

[f_{i,j}=minlimits_{p=1}^{i-1} f_{p,j-1}+(s_i-s_j)^2 ]

直接拆式子:

如果 (x<y)

[frac{f_x+s_x^2-(f_y+s_y^2)}{s_x-s_y}<2 imes s_i ]

(x) 不优

右边单调增

上单调队列即可,记得用滚动数组、

Luogu6047 丝之割

这个题有点像??

({a})({b}) 做前缀后缀 (min)

列方程

[f_i=minlimits^{i-1}_ {j=1} f_j+a_{x_{j+1}-1} imes b_{y_i+1} ]

由于做了前缀后缀 (min)

所以我们在取 ({a})({b}) 直接对应下标取就好

这里加 (1)(1) 相当繁复

由链接的那个题,先处理哪些点是没有用处的

然后直接斜率优化这个转移即可

式子:

[frac{f_p-f_q}{x_p-x_q}<y_i ]

这里的加一减一啥的就不往式子里写了

右边排完序单调,维护下凸壳

原文地址:https://www.cnblogs.com/yspm/p/12829627.html