動態規劃學習筆記

aCssen發表於2024-08-03

P3195

求出玩具的字首和 \(S\)

\(f_i\) 表示區間 \([1,i]\) 的最大答案。開始應該是 \(f_0=0\)

\(f_i =\max_{1 \le j < i}f_j+(i+S_i-L-1-(j+S_j))^2\)

\(f_i =\max_{1 \le j < i}f_j+(i+S_i-L-1)^2+(j+S_j)^2-2(i+S_i-L-1)(j+S_j)\)

\(g_i=i+S_i,k=L+1\),那麼 \(f_i=\max_{1 \le j<i}f_j+(g_i-k)^2+g_j^2-2g_j(g_i-k)\)

\(i\) 這邊的去掉,就是 \(f_i=(g_i-k)^2+\max_{1 \le j<i} f_j+g_j^2-2g_jg_i-2g_jk\)

考察兩個點 \(j_1<j_2\),且 \(j_1\) 不劣於 \(j_2\) 的條件。

那就是 \(f_{j_1}+g_{j_1}^2-2g_{j_1}(g_i-k) \le f_{j_2}+g_{j_2}^2-2g_{j_2}(g_i-k)\)

\[f_{j_1}-f_{j_2}+g_{j_1}^2-g_{j_2}^2-2g_{j_1}(g_i-k)+2g_{j_2}(g_i-k) \le 0 \]

\[f_{j_1}-f_{j_2}+g_{j_1}^2-g_{j_2}^2-2g_{j_1}(g_i-k)+2g_{j_2}(g_i-k) \le 0 \]

\[f_{j_1}-f_{j_2}+g_{j_1}^2-g_{j_2}^2\le(2g_{j_1}-2g_{j_2})(g_i-k) \]

\(F(j)=f_j+g_j^2\),那麼 \(F(j_1)-F(j_2) \le (g_{j_1}-g_{j_2})2(g_i-k)\)

由於 \(j_1 <j_2\),所以 \(g_{j_1}<g_{j_2}\),那麼 \(\frac{F(j_1)-F(j_2)}{g_{j_1}-g_{j_2}} \ge 2(g_i-k)\)

換言之,\(\frac{F(j_2)-F(j_1)}{g_{j_2}-g_{j_1}} \ge 2(g_i-k)\)

\(slope(i,j)=\frac{F(j)-F(i)}{g_j-g_i}\),其中 \(i<j\)

然後,套路的考慮三個點 \(l<mid<r\)\(mid\) 為最優決策的條件。

需要滿足 \(slope(l,mid)\le 2(g_i-k),slope(mid,r) \ge 2(g_i-k)\)

那麼 \(slope(l,mid) \le slope(mid,r)\)

如果不是這樣,\(mid\) 就一定不是最優決策,刪掉即可。最後剩下一個下凸殼。

然後在 \(i\) 操作的時候,只需要找到第一個斜率超過 \(2(g_i-k)\) 的點即可。

AT_dp_z Frog 3

\(f_i=h_i^2+C+\min_{1 \le j<i} f_j+h_j^2 -2h_ih_j\)

對後面進行最佳化。

假設 $j_1 $ 不比 \(j_2\) 劣,且 \(j_1<j_2\)

那就是 \(f_{j_1}+h_{j_1}^2-2h_ih_{j_1} \le f_{j_{2}}+h_{j_2}^2 -2h_ih_{j_2}\)

移項,容易得到 \(2h_i(h_{j_2}-h_{j_1})\le f_{j_2}-f_{j_1}+h_{j_2}^2-h_{j_1}^2\)

\(F(j)=f_{j}+h_j^{2}\)

原式可化為 \(2h_i \le \frac{F(j_2)-F(j_1)}{h_{j_2}-h_{j_1}}\)

\(slope(i,j)=\frac{F(j)-F(i)}{h_{j}-h_{i}}(i<j)\)

假設有三個決策 \(l,mid,r\),其中 \(l<mid<r\)。若 \(mid\) 為最優決策點,需要滿足的條件是:

$slope(l,mid) \le 2h_i,solpe(mid,r) \ge 2h_i $

那麼 \(solpe(l,mid) \le solpe(mid,r)\)
那麼如果有一對 \(l<mid<r\),滿足 \(solpe(l,mid) \ge solpe(mid,r)\),那麼 \(mid\) 一定不可能成為最優決策,可以刪掉。

那麼最後剩下的相鄰兩個點一定不會出現斜率 $\ge $ 的情況,那麼斜率就是單調遞增的一個下凸殼。

那麼斜率單調遞增了,對於一對斜率不超過 \(2h_i\) 的節點 \((j_1,j_2),j_1 <j_2\),那麼 \(j_2\) 一定比 \(j_1\) 優,那麼應該選的是靠後的,但是對於超過了的,那 \(j_1\) 就不比 \(j_2\) 劣,直接無敵。

因為 \(h\) 單調,所以不會出現之前不優後來優的情況。

至於等號,有一個技巧就是全都帶上肯定是沒問題的。

相關文章