[APIO2010]特别行动队
2021-07-12 21:06
标签:斜率优化dp turn long 表示 并且 get code 不能 print 其实就是找斜率的方式将DP方程转换为y = kx+b的形式。 如果对于方程形如这样的 我们不能对其进行比较有效果的优化,因为它的转移,涉及到了关于i和关于j的一些数组,这时我们就需要用斜率优化了。 通常我们令k 并且我们都可以化成如下形式,X[j],Y[j]指只关于j的数,X[k],Y[k]就是 我们可以根据这个式子,来优化DP,这就是斜率优化的主要思想。 设f[i]表示将前i个分组的最优值,则有转移方程式: 经过化简得到: [APIO2010]特别行动队 标签:斜率优化dp turn long 表示 并且 get code 不能 print 原文地址:https://www.cnblogs.com/Repulser/p/9592352.html一道斜率优化DP
首先,什么是斜率优化:
$F[i] = min(F[j] + Sum[i,j]) + k$(k为常数)
$ F[j] + sum[i,j]
$\frac {Y[j] - Y[k]} {X[j] - X[k]}
$==============这是分割线=============$
那我们来看这道题:
f[i]=max{ f[j]+a*(C[i]-C[j])^2+b*(C[i]-C[j])+c }
f[i]=max{ (f[j]+a*C[j]^2-b*C[j])-2*a*C[i]*C[j] } + a*C[i]^2+b*C[i]+c
单调队列维护上凸壳就行了
这是代码:
#include