論區間動態規劃——平行四邊形優化
區間動態規劃:
針對區間問題的最優解而產生的一種動態規劃演算法,通常以區間為狀態來記錄最優解,故狀態為O(N^2)
而轉移則是列舉這段區間中的決策點,通過兩個更小的區間最優解得合併來得到這段區間的狀態,故轉移為(N)
則狀態O(N^2),轉移O(N),總時間複雜度為O(N^3)
例如f[i][j]表示i~j這段區間的最優解,則有f[i][j]=opt(f[i][k]+f[k+1][j]+w(i,j))(i+1<=k<=j-1)
同時對於某些滿足四邊形不等式的的區間動態規劃,因具有決策單調性,故可以通過縮小最優決策點的範圍來使得轉移從O(N)變為O(1),這樣優化後的區間動態規劃時間複雜度就降為了O(N^2)
以下是對區間動態規劃平行四邊形優化的正確性證明:
(部落格正在更新.......請耐心等待作者上傳O(∩_∩)O)
相關推薦
論區間動態規劃——平行四邊形優化
區間動態規劃: 針對區間問題的最優解而產生的一種動態規劃演算法,通常以區間為狀態來記錄最優解,故狀態為O(N^2) 而轉移則是列舉這段區間中的決策點,通過兩個更小的區間最優解得合併來得到這段區間的狀態,故轉移為(N) 則狀態O(N^2),轉移O(N),總時間
藍橋杯/nyoj 737 合併石子 區間dp+平行四邊形優化
問題描述 在一條直線上有n堆石子,每堆有一定的數量,每次可以將兩堆相鄰的石子合併,合併後放在兩堆的中間位置,合併的費用為兩堆石子的總數。求把所有石子合併成一堆的最小花費。 輸入格式 輸入第一行包含一個整數n,表示石子的堆數。 接下來一行,包含n個整數,按
HDU3480_區間DP平行四邊形優化
做到現在能一眼看出來是區間DP的問題了 也能夠知道dp[i][j]表示前 i 個節點被分為 j 個區間所取得的最優值的情況 cost[i][j]表示從i到j元素區間中的值,這裡可以直接排序後簡單求出——也就是我們的代價函式 這樣其實就能夠做出來了,但是空間複
【BZOJ4654】【NOI2016】國王飲水記(動態規劃,斜率優化)
code 奇怪 while lib show ima double 優化 .com 【BZOJ4654】【NOI2016】國王飲水記(動態規劃,斜率優化) 題面 BZOJ 洛谷 題解 首先肯定是找性質。 明確一點,比\(h_1\)小的沒有任何意義。 所以我們按照\(h\)排
【BZOJ3203】保護出題人(動態規劃,斜率優化)
現在 bzoj3203 d+ while 我們 register 攻擊 nod http 【BZOJ3203】保護出題人(動態規劃,斜率優化) 題面 BZOJ 洛谷 題解 在最優情況下,肯定是存在某只僵屍在到達重點的那一瞬間將其打死 我們現在知道了每只僵屍到達終點的時間,因
洛谷P2900 [USACO08MAR]土地征用Land Acquisition(動態規劃,斜率優化,決策單調性,線性規劃,單調隊列)
tps include 寫法 lan clas com mat 成了 dong 用兩種不一樣的思路立體地理解斜率優化,你值得擁有。 題意分析 既然所有的土地都要買,那麽我們可以考慮到,如果一塊土地的寬和高(其實是蒟蒻把長方形立在了平面上)都比另一塊要小,那麽肯定是直接並購,
hdu6249 區間動態規劃
sha using name scanf 題意 long long tdi ret tar 題目鏈接 題意:給出一些區間,求選k個區間能覆蓋的最多點的數量 思路:定義dp[i][j]為前i個點取j個區間的最大值。dp[i][j]可以轉移到dp[i+1][j+1]和以i+1為
區間動態規劃模板
#include <cstdio> #include <cstring> #include <iostream> #include <algorithm> using namespace std; int n, v[31], f[31][31], ro
S - Spiderman POJ - 1925 (區間動態規劃)
S - Spiderman POJ - 1925 Dr. Octopus kidnapped Spiderman's girlfriend M.J. and kept her in the West Tower. Now the hero, Spiderman, ha
Tsinsen A1210 光稜坦克——動態規劃+字首和優化
題意 一個平面直角座標系上,有N個點,標號為1到N,其中第i個點的座標為(x[i], y[i])。 求滿足以下兩個條件的點列{p[i]}的數目(假設{p[i]}的長度為M) (1) 對任意1 <= i < j <= M,必有y[p[i
POJ 1088 滑雪 (記憶化、動態規劃、排序優化)
滑雪 Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 108063 Accepted: 41157 Description Michael喜歡滑雪百這並不奇怪, 因為
DP的平行四邊形優化
Luogu P4767 [IOI2000]郵局 #include <bits/stdc++.h> using namespace std; int n,m,a[3005],mk[3005][
動態規劃的空間優化, 以最長公共子序列為例
最簡單的直接按照遞推式去寫 #include <stdio.h> #include <string.h> char a[1001], b[1001]; int tag[1001][1001]; #define max(a, b) a
一道題看懂如何解決動態規劃問題並優化(找零錢問題)
目錄 找零錢問題: 最簡單的:暴力搜尋 針對冗餘計算的進一步優化:記憶化搜尋 進一步優化:動態規劃 動態規劃的簡化: 去掉列舉過程,簡化動態規劃方程 總結 文章內容來自對牛客網左神課程的整理。 很多同學(包括今天之前的我)都認為動態規劃很難,其實很大程度上是因為不
[LeetCode 309] Best Time to Buy and Sell Stock with Cooldown(動態規劃及進一步優化)
題目內容 309 Best Time to Buy and Sell Stock with Cooldown Say you have an array for which the ith element is the price of a given st
2018.8.12位元組跳動筆試第四題-區間動態規劃
題目描述 兩個長度為n的序列a, b,問有多少個區間[l,r]滿足如下式子: max(a[l,r])<min(b[l,r]),0≤l≤r<nmax(a[l,r])<min(b[l,
演算法優化:動態規劃加速,貨物運輸問題,四邊形不等式, 從O(n^2)到O(n^3)
貨物運輸問題 遞迴方程為: 更為一般形式的遞迴方程 看起來是不是像可以使用分治的策略實現,但是min裡面子問題太多了,只能使用動態規劃的招了。 i,j是什麼含義了?動態規劃裡i,j都是指的是問題規模,對應到貨物運輸問題指的是什麼了?我們從數學上理解i,j是指
動態規劃練習-環狀石子歸併+四邊形不等式優化
思路:環狀的直接在n後面加上a[0]-a[n]變成鏈狀即可。 這題範圍小,如果n<1000,則必須四邊形不等式優化降低複雜度為O(n^2) Code: #include <bi
Gym 100829S_surf 動態規劃的優化
ac代碼 暴力 頭文件 復雜度 優化 p值 萬能 col ets 題目大意是,非你若幹個任務,任務分別對應開始時間、預期收益、持續時間三項指標,讓你從中選擇一個受益最大的方案(沒有開始時間相同的任務)。 於是,標準狀態轉移方程應當為,設DP[K]為選擇了前K個任務的最大收益
51Nod 1022 石子歸並 V2(區間DP+四邊形優化)
增加 pre 分享 ems 滿足 log 如果 算法 技術 題目鏈接:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1022 題目大意: N堆石子擺成一個環。現要將石子有次序地合並成一堆。規定