通常的dp转移为现在处理到的dp[i],要在前面的dp状态中找到一个最优的状态dp[k]转移过来。
设转移方程为dp[i]=max{dp[i],a[i]*x[k]+b[i]*y[k]}
相当于在二维坐标系中有很多点,要选取最优的点,产生最优的价值。
而几乎每个点的X坐标和Y坐标都不相同,怎么比较最优?
相信大部分人都已经猜到了。
X和Y是存在转换比例的,且X转换到Y的比例就是a[i]/b[i],也就是图中的斜线的斜率。
那一条直线上的点都是等优的。
然后为什么是横截式就很简单了,就是将X全部转换成Y,就很容易看出最优了。
即我们要最大化直线方程Y(j)=-A[i]/B[i]*X(j)+dp[i]/B[i]的截距。
弄个凸包维护就行了,有单调性的话就用单调队列。
脑子热~~
浅谈关于斜率优化中为什么能转换为横截式
最新推荐文章于 2020-12-19 16:24:58 发布