1. 程式人生 > >【總結】DP優化

【總結】DP優化

math 平衡樹 斜率 min clas 尾刪 可能 Y軸 完成

斜率優化

對形如:

\[ f_i=min/max \{f_j+w_{i,j} \} \]
\[ 更確切地,為形如f_i=min/max_{j<i}\{f_j+g_1(i)*g_2(j)+h_1(i)+h_2(j)\} \]
\[ (關鍵在於含有關於i,j的函數的乘積g_1(i)*g_2(j)) \]

的dp方程可使用斜率優化

移項,得:
\[ f_j+h_2(j)=g1(i)*g_2(j)+f_i-h_1(i) \]
\(則f_i-h_1(i)可以看做是用斜率為g_1(i)的直線去截坐標系上的點(g_2(j),f_j+h_2(j))\\在y軸上得到的截距\)

  • \(若g_1(i)與g_2(j)均單調\)
    :

\(用單調隊列維護對應凸包上的點\\ 轉移時先從隊首刪去所有不再可能成為新的轉移決策點的點(該轉移一定滿足決策單調),\\ 確定f_i的值後再從隊尾刪去不在新凸包上的點,兩次操作均由比較斜率完成\)

  • \(若不單調若g_1(i),g_2(j)不單調\):

\(用平衡樹+二分或cdq分治維護凸包/完成轉移\)

wqs二分/凸優化/帶權二分

【總結】DP優化