1、狀態轉移方程如下:
m(i,j)表示對應i,j情況下的最優值。
w(i,j)表示從i到j的代價。
例如在合併石子中:
m(i,j)表示從第i堆石子合併到j堆石子合併成一堆的最小代價。
w(i,j)表示從第i堆石子到第j堆石子的重量和。
2、函式w滿足區間包含的單調性和四邊形不等式
1、假如函式w滿足上述條件,那麼函式m 也滿足四邊形不等式,即
例如:
假如有:w(1, 3) + w(2, 4) £ w(2, 3) + w(1, 4),
m(1, 3) + m(2, 4) £ m(2, 3) + m(1, 4),
2、假如m(i, j)滿足四邊形不等式,那麼s (i, j)單調,即:
運用上面兩條定理,可以將最上面的dp狀態轉移方程變為如下:
用四邊形優化將合併石子(直線型)的時間複雜度化為 o(n*n)
1 #include 2 #include上述**具體在記憶體中的執行過程:3 #include 4
5using
namespace
std;
6const
int inf = 1
<< 30;7
const
int n = 1005;8
9int
dp[n][n];
10int
p[n][n];
11int
sum[n];
12int
n;13
14int
getminval()
1521
for(int len=1; len)
2235
}36 dp[i][end] =tmp;
37 p[i][end] =k;38}
39}40return dp[1
][n];41}
4243
intmain()
4454 printf("
%d\n
",getminval());55}
56return0;
57 }
dp四邊形優化
如果dp i j min dp i k dp k 1 j w i j 且滿足dp a c dp b d dp a d dp c d a那麼dp具有四邊形不等式性質 另外如果可以證明w i j 滿足單調性和四邊形不等式性質,那麼dp也具有四邊形不等式性質 單調性 w i j w i j 1 w i 1...
四邊形優化dp小結
在本蒟蒻開始亂扯之前,先推薦兩篇部落格,有更詳細清晰的講解,這兒就不說那麼多了,畢竟叫 小結 對吧。下面進入正題 一下所有的把min取成max,把 取成 也成立 對於乙個狀態轉移方程dp i j min 1.當函式w i,j 滿足 w a,c w b,d w b,c w a,d 且a b c d 時...
四邊形優化
匆匆忙忙搞了一下四邊形優化,也就是做了幾道入門題而已 四邊形不等式詳解 反正我就記住這句話 判斷w是否為凸即判斷 w i,j 1 w i,j 的值隨著i的增加是否遞減 hdu 2829 include include include using namespace std define maxn 1...