學習了四邊形不等式,這類題的的方程通常是這樣的:
f[i,j]=opt( f[i,k-1]+f[k,j] )+cost[i,j]
【我一般理解為區間動態規劃】
應用條件是:
第一,其中的cost(i,j)是存在單調性的,即當區間[i,j]包含區間[i』,j』]時有cost(i,j)>=cost(i』,j』)
第二,設i<=i』<=j<=j』,有cost(i,j)+cost(i』,j』)<=cost(i』,j)+cost(i,j』)
如果上面兩個條件滿足的話,那麼就有以下的定理:
定理1:
f(i,j)也滿足四邊形不等式
即設i<=i』<=j<=j』,有f(i,j)+f(i』,j』)<=f(i』,j)+f(i,j』)
定理2:
設g(i,j)為當f(i,j)取最優值時的最大k值(當有多個k滿足時,取最大的k)
g(i,j)單調:g(i,j-1)<=g(i,j)<=g(i+1,j)
最後的結論就是:
求f(i,j)的時候決策k不必在[i,j]中列舉,可以在g(i,j-1)與g(i+1,j)中列舉
加入四邊形優化的**也不難,和基本的沒有什麼區別,只需要在列舉決策的時候變動下就好。
偽**模板
1 memset(f,0,sizeof(f)); memset(g,0,sizeof想要證明凸性也很簡單,例如要驗證w的凸性,我們知道,這個不等式是有對稱性的,也就是說我們可以固定乙個變數,例如固定j,直接算出w(i,j+1)-w(i,j)的關於i的表示式,然後觀察這個表示式是否有單調性,如果是為遞減的,那麼w做了幾道題,先整理了一道,其餘的以後補上(g));
2for (int i=1; i<=n; i++)
3 g[i][i]=i;
4for (int len=1; len<=n; len++)
5for (int i=2; i<=n; i++)
615 }
【題目一】 noi 1995 合併石子(題目很好找的)
狀態轉移方程很好列出來,基本的區間動態規劃
f[i,j]=min+s[i,j]
其中s[i,j]表示i到j堆石子的累加和,很明顯滿足四邊形不等式,所以f[i,j]也滿足凸性[即四邊形不等式]
這樣我們如果用p[i,j]表示最優決策的話,那麼一定有p[i,j-1]<=p[i,j]<=p[i+1,j],這樣就做到了優化程式。
合併石子四邊形不等式優化
1 #include 234【題目二】 poj 11605#define maxn 102467
#define oo 20000000089
1011
using
namespace
std;
1213
1415
intn,i,j,k,len;
1617
intnum[maxn], sum[maxn];
1819
intf[maxn][maxn],s[maxn][maxn];
2021
2223
intmain()
2425
4849
5051
for (len=2; len<=n; len++)
5253
for (i=1; i<=n-len+1; i++)
5455
7475}76
7778
79 printf("
%d\n
", f[1
][n]);
8081
8283
return0;
8485 }
題解這個人寫的很好,我算是跟著寫的,用到了一點兒變形
poj 1160
1 #include 2 #include 34#define oo 1000000000
5#define maxn 31067
using
namespace
std;89
intn,m,i,j;
10int
f[maxn][maxn],w[maxn][maxn];
11int
v[maxn],s[maxn][maxn];
1213
intmain()
1426
27for(i = 1 ; i <= n ; i ++)
2832
33for(i = 2 ; i <= m ; i ++)
3445}46
}47 printf("
%d\n
",f[n][m]);
48return0;
49 }
四邊形不等式優化
先占個坑,準備學習一把運籌學,好像裡面很多最優化的內容都是和演算法設計相關聯的問題 下面內容 發現了一篇更好的部落格,粘上去,粘上去。簡介 給出乙個長度為l的木棍,以及n個切割點 要求切割成n 1段,每切一次花費都是原始的木棍長度 求最小花費 分析 實際上我們可以看做是n 1個物品 這和能量項鍊是一...
四邊形不等式優化
例 一條筆直的高速公路上有n個村莊,每個村莊都有乙個整數字置座標,不同村莊的座標不同,現在要在其中的 p 個村莊上建立郵局。請問如何安排郵局的位置可以使得每個村莊到其最近郵局的距離和最小,輸出這個最小值。輸入格式 第一行包含兩個整數n和p,分別表示村莊數量以及郵局數量。第二行包含n個整數,表示n個村...
四邊形不等式優化
在一些動態規劃中狀態轉移方程是這樣的 m i,j min left 顯而易見,這種方法的時間複雜度是 o n 如何去優化呢?四邊形不等式 通過四邊形不等式的優化,可以進一步限定 k 的範圍,從而可以將事件複雜度降為 o n 我們最終的目的是證明決策變數 k 的單調性 此優化方法由姚期智的夫人儲楓 f...