标签:www 更新 复杂 lan 凸包 题解 get 单调队列 第八天
斜率优化:
每次把i*j的项作为k,i的项和常数项作为b,j的项作为y,要是i的项最小,也就是截距最小,就是y=kx第一次接触到函数时,于是可以用单调队列维护一个凸包(以下都讲下凸包)。结合图可知i的最优决策为第一个斜率>k的点。
step1:当head~head+1的斜率<k时,head++;
step2:更新f[i];
step3:当tl-1~tl的斜率>=tl~i的斜率时,tl--;
step4:把i加入队列。
注意:O(n)的斜率优化需要满足斜率单调性,当题目不满足斜率单调性时可二分第一个斜率>k的点,时间复杂度变为O(nlogn);
题解:暴力的解法是O(n^3),但是可以将s的费用提前计算,将复杂度降到O(n^2),但仍然过不掉,考虑优化,发现不满足斜率单调性,于是使用二分的斜率优化即可。
标签:www 更新 复杂 lan 凸包 题解 get 单调队列 第八天
原文地址:https://www.cnblogs.com/oierqingmo/p/13511914.html