国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

動態(tài)規(guī)劃——決策單調性優(yōu)化DP 學習筆記

這篇具有很好參考價值的文章主要介紹了動態(tài)規(guī)劃——決策單調性優(yōu)化DP 學習筆記。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

動態(tài)規(guī)劃——決策單調性優(yōu)化DP 學習筆記

決策單調性

對于最優(yōu)性問題,常有狀態(tài)轉移方程:\(f_i = \min/\max\{f_j\dots\}\),

形象的:如果 \(i\) 的最優(yōu)轉移點是 \(j\),\(i'\) 的最優(yōu)轉移點是 \(j'\),當 \(i<i'\) 時,有 \(j\le j'\),則稱該 DP 問題具有決策單調性。

即:\(i\) 單增,其最優(yōu)轉移點單調不減。

如何發(fā)現(xiàn)一個轉移方程具有決策單調性?打表。

使用

一、離線決策單調性

形如:\(f(i, j) = \min\limits_{k \le j}\{f(i-1, k)+\text{cost}(k,j)\}\),轉移分層.

形象的:\(f(i, j)\) 表示將前 \(j\) 個物品分為 \(i\) 端的最小花費,則原式意為,枚舉一個 \(k\) 個,將前 \(k\) 個分為 \(i-1\) 段,再加上后面這一段所需的花費。

那么此時,最 native 的算法是,三層循環(huán)枚舉,時間復雜度就是 \(O(nm^2)\) 的。

決策單調性:設 \(k\)\(f(i,j)\) 的最優(yōu)轉移點,\(k'\)\(f(i, j')\) 的最優(yōu)轉移點,當 \(j<j'\) 時有 \(k\le k'\),則該 DP 具有決策單調性。

形象的:對于每一層(固定 \(i\) 不變),\(j\) 單增,其最優(yōu)轉移點(在 \(i-1\) 層上)單調不減。

因此,我們可以一層一層的 DP,對于第 \(i\) 層,我們先算 \(f(i, \mathrm{mid})\),其中 \(\mathrm{mid} = m/2\);同時求出 \(f(i, \mathrm{mid})\) 的最優(yōu)轉移點 \(f(i-1, \mathrm{opt})\)。那么 \([1,i-1]\) 的最優(yōu)轉移點只能在 \(f(i-1,1\dots \mathrm{opt})\) 中取,\([i+1,n]\) 的最優(yōu)轉移點只能在 \(f(i-1,\mathrm{opt}\dots n)\) 中取。

如圖:動態(tài)規(guī)劃——決策單調性優(yōu)化DP 學習筆記

遞歸下去,即:

\(s(i,l,r,p,q)\) 表示算 \(f(i,l\dots r)\) 且最優(yōu)轉移點只可能在 \(f(i-1,p\dots q)\)中,先算 \(f(i,\mathrm{mid})\) 的值(即枚舉 \(p\)\(q\)),求出最優(yōu)轉移點 \(\mathrm{opt}\)

然后遞歸求解:\(s(i,l,r,p,q)\rightarrow\left\{\begin{array}{c}s(i,l,\mathrm{mid}-1,p,\mathrm{opt})\\s(i,\mathrm{mid}+1,r,\mathrm{opt},q)\end{array}\right.\).

則時間復雜度為 \(O(nm \log m)\)。

例題:CF321E Ciel and Gondolas.

點擊查看代碼

僅核心代碼。

暴力:

inline int cost(const int x, const int y) {
    return (s[y][y] - s[y][x - 1] - s[x - 1][y] + s[x - 1][x - 1]) >> 1;
} signed main() {
    int n = ur, k = ur;
    for (int i = 1; i <= n; ++i) for (int j = 1; j <= n; ++j) s[i][j] = ur + s[i - 1][j] + s[i][j - 1] - s[i - 1][j - 1];
    memset(f, 0x3f, sizeof f); for (int i = 0; i <= n; ++i) f[i][0] = 0;
    for (int i = 1; i <= k; ++i) for (int j = 0; j <= n; ++j) {
        for (int t = 0; t <= j; ++t) f[i][j] = min(f[i][j], f[i - 1][t] + cost(t + 1, j));
    } printf("%d\n", f[k][n]);
    return 0;
}

決策單調性優(yōu)化:

inline int cost(const int x, const int y) {
    return (s[y][y] - s[y][x - 1] - s[x - 1][y] + s[x - 1][x - 1]) >> 1;
} void solve(int i, int l, int r, int p, int q) {
    if (l > r) return;
    int j = l + r >> 1, opt = 0;
    for (int t = p; t <= q && t <= j; ++t) {
        int e = f[i - 1][t] + cost(t + 1, j);
        if (f[i][j] > e) f[i][j] = e, opt = t;
    }
    solve(i, l, j - 1, p, opt);
    solve(i, j + 1, r, opt, q);
} signed main() {
    int n = rr, k = rr;
    for (int i = 1; i <= n; ++i) for (int j = 1 ; j <= n; ++j) s[i][j] = rr + s[i - 1][j] + s[i][j - 1] - s[i - 1][j - 1];
    memset(f, 0x3f, sizeof f); f[0][0] = 0;
    for (int i = 1; i <= k; ++i) solve(i, 0, n, 0, n);
    printf("%d\n", f[k][n]);
    return 0;
}

二、離線決策單調性

一維 DP,形如:\(f_r=\min\limits_{l=1}^{r-1}\{f_l+\text{cost}(l,r)\}\).

其決策單調性為 \(i\) 單增,其最優(yōu)轉移點 \(j\) 單調不見,比如:11122222244 這種。

動態(tài)規(guī)劃——決策單調性優(yōu)化DP 學習筆記

沒聽懂 zhq 老師講的,等著看 wzm 的回放。。。

三、區(qū)間 DP 決策單調性

對于最優(yōu)化的區(qū)間 DP,設 \(d_{i,j}\)\(f_{i,j}\) 的最優(yōu)轉移點,具有決策單調性的條件為 \(d_{l,r-1} \le d_{l,r} \le d_{l+1,r}\)。

求解方法:按長度枚舉區(qū)間;計算 \(f_{lr}\) 的時候,從 \(d_{l,r-1}\) 枚舉到 \(d_{l+1,r}\)。

時間復雜度:\(O(n^2)\),神奇的證明(\(\text{By zhq}\))如圖:

動態(tài)規(guī)劃——決策單調性優(yōu)化DP 學習筆記

題單

見:https://www.luogu.com.cn/training/386809

Reference

[1] https://oi-wiki.org/dp/opt/quadrangle/
[2] https://www.cnblogs.com/lnzwz/p/12444390.html
[3] https://www.cnblogs.com/lhm-/p/12229791.html
[4] https://www.luogu.com.cn/blog/command-block/dp-di-jue-ce-dan-diao-xing-you-hua-zong-jie文章來源地址http://www.zghlxwxcb.cn/news/detail-711388.html

到了這里,關于動態(tài)規(guī)劃——決策單調性優(yōu)化DP 學習筆記的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!

本文來自互聯(lián)網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • 動態(tài)規(guī)劃——狀壓DP 學習筆記

    前置知識:位運算 動態(tài)規(guī)劃的過程是隨著階段的增長,在每個狀態(tài)維度上不斷擴展的。 在任意時刻,已經求出最優(yōu)解的狀態(tài)與尚未求出最優(yōu)解的狀態(tài)在各維度上的分界點組成了 DP 擴展的“輪廓”。對于某些問題,我們需要在動態(tài)規(guī)劃的“狀態(tài)”中記錄一個集合,保存這個“

    2024年02月08日
    瀏覽(25)
  • 動態(tài)規(guī)劃——樹形DP 學習筆記

    前置知識:樹基礎。 樹形 DP,即在樹上進行的 DP,最常見的狀態(tài)表示為 (f_{u,cdots}) ,表示以 (u) 為根的子樹的某個東東。 本文將講解一些經典題目(樹的子樹個數、樹的最大獨立集、樹的最小點覆蓋、樹的最小支配集、樹的直徑、樹的重心、樹的中心),以及一些常見形

    2024年02月08日
    瀏覽(22)
  • 動態(tài)規(guī)劃——數位DP 學習筆記

    引入 數位 DP 往往都是這樣的題型:給定一個區(qū)間 ([l, r]) ,求這個區(qū)間中滿足某種條件的數的總數。 簡單的暴力代碼如下: 而當數據規(guī)模過大,暴力枚舉就 (mathbb T) 飛了,因此引入數位 DP: 概念 數位(digit):對于十進制,即把一個數字按照個位、十位、百位等,一位

    2024年02月08日
    瀏覽(26)
  • AcWing算法學習筆記:動態(tài)規(guī)劃(背包 + 線性dp + 區(qū)間dp + 計數dp + 狀態(tài)壓縮dp + 樹形dp + 記憶化搜索)

    AcWing算法學習筆記:動態(tài)規(guī)劃(背包 + 線性dp + 區(qū)間dp + 計數dp + 狀態(tài)壓縮dp + 樹形dp + 記憶化搜索)

    算法 復雜度 時間復雜度0(nm) 空間復雜度0(nv) 代碼 算法 通過滾動數組對01背包樸素版進行空間上的優(yōu)化 f[i] 與 f[i - 1]輪流交替 若體積從小到大進行遍歷,當更新f[i, j]時,f[i - 1, j - vi] 已經在更新f[i, j - vi]時被更新了 因此體積需要從大到小進行遍歷,當更新f[i, j]時,f[i - 1,

    2024年02月21日
    瀏覽(21)
  • 15.動態(tài)規(guī)劃:數據結構優(yōu)化DP

    數據結構優(yōu)化DP有前綴和、滑動窗口、樹狀數組、線段樹、單調棧、單調隊列 中等 給你一個整數數組 nums ,找到其中最長嚴格遞增子序列的長度。 子序列 是由數組派生而來的序列,刪除(或不刪除)數組中的元素而不改變其余元素的順序。例如, [3,6,2,7] 是數組 [0,3,1,6,2,2

    2024年02月03日
    瀏覽(22)
  • 從01背包開始動態(tài)規(guī)劃:暴力解法 + dp + 滾動數組 + dp優(yōu)化

    從01背包開始動態(tài)規(guī)劃:暴力解法 + dp + 滾動數組 + dp優(yōu)化

    ? ? 01背包問題是動態(tài)規(guī)劃中最經典的問題之一,本篇將通過給出其四種解法,使讀者更深刻理解動態(tài)規(guī)劃。 ? 有N件物品和一個容量是?V 的背包,每個物品有各自的體積和價值,且每個物品只能放一次(這也是01背包名字的由來),如何讓背包里裝入的物品具有最大的價值總

    2024年04月17日
    瀏覽(22)
  • 【優(yōu)化數學模型】2. 動態(tài)規(guī)劃DP方法的求解思路

    【優(yōu)化數學模型】2. 動態(tài)規(guī)劃DP方法的求解思路

    多階段決策問題,就是要在允許的決策范圍內,選擇一個最優(yōu)決策使整個系統(tǒng)在預定標準下達到最佳效果。 動態(tài)規(guī)劃 (dynamic programming,DP) 是用來解決多階段決策過程最優(yōu)化的一種數量方法。其特點在于,它可以把一個n維決策問題變換為幾個一維最優(yōu)化問題,從而一個一個地去

    2024年02月21日
    瀏覽(24)
  • 動態(tài)規(guī)劃(DP)(算法筆記)

    動態(tài)規(guī)劃(DP)(算法筆記)

    本文內容基于《算法筆記》和官方配套練題網站“晴問算法”,是我作為小白的學習記錄,如有錯誤還請體諒,可以留下您的寶貴意見,不勝感激。 動態(tài)規(guī)劃(Dynamic Programming,DP)是一種用來解決一類最優(yōu)化問題的算法思想。簡單來說,動態(tài)規(guī)劃將一個復雜的問題分解成若干個子

    2024年02月05日
    瀏覽(20)
  • 【動態(tài)規(guī)劃 狀態(tài)機dp 性能優(yōu)化】3098. 求出所有子序列的能量和

    【動態(tài)規(guī)劃 狀態(tài)機dp 性能優(yōu)化】3098. 求出所有子序列的能量和

    動態(tài)規(guī)劃 狀態(tài)機dp 性能優(yōu)化 給你一個長度為 n 的整數數組 nums 和一個 正 整數 k 。 一個子序列的 能量 定義為子序列中 任意 兩個元素的差值絕對值的 最小值 。 請你返回 nums 中長度 等于 k 的 所有 子序列的 能量和 。 由于答案可能會很大,將答案對 109 + 7 取余 后返回。 示

    2024年04月27日
    瀏覽(26)
  • 動態(tài)規(guī)劃算法刷題筆記【狀壓dp】

    動態(tài)規(guī)劃算法刷題筆記【狀壓dp】

    a1 == 1 判斷是否為奇數,如果為1,則為奇數 因為奇數二進制末位一定是1,所以 與1 得到的結果是1 這里,114——2 14 ——第15位是1,可以表示14個1 i(1j)—— 從0開始是因為,原本第1位就是1。所以j=0時,對應的就是 i 的最低位 F l o y d Floyd Fl oy d 算法: n o w ∣ f l a g = = f l

    2024年02月11日
    瀏覽(27)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包