區間 dp 是一模擬較簡單的 dp ,通過分區間進行 dp ,再將各個區間的貢獻合併,取區間最優解,最終達到dp的效果。
區間 dp 一般適用於較為明顯的合併類問題,或是需要題幹**現了分部分的內容;在一些問題中,區間 dp 可能和記憶化搜尋十分相像。
從小到大列舉區間左標 l 和右標 r , 保證區間長度的由小到大,或是遞迴地進行求解;
對於每個區間 [ l, r ] ,列舉區間分隔點為 i,再用 dp 的方式合併區間 [ l, r ] 的貢獻。
[noi1995] 石子合併:
模板題,但稍有不同的是要將環破為鏈,這裡可以採用總長 n 乘 2 的方式來做,或是將下標 mod 2 來做。
對於區間來說,這裡直接按區間 dp 的套路來做就行了,注意對於每個珠子的頭尾標變化。
[noip2006 提高組] 能量項鍊 :
一道經典的區間 dp 例題,與上題基本一模一樣
p4302 [scoi2003]字串摺疊:
這道題就不那麼顯然了,但是關注到合併的操作與石子合併有異曲同工之妙,我們依舊可以用區間 dp 來解決。
定義 d[i][j] 為區間 [ i, j ] 合併後串的最小值,對於每乙個[ i, j ] 區間,我們依舊列舉分隔點 k 並遞迴地求解 [ i, k ] 和 [ k+1, j ] 兩段區間的貢獻和。
但要注意的一點是,對於每一段區間,在找到它的長度最小值之後還要看它本身能不能摺疊,作為本身乙個大區間,可以判定它是否能摺疊,
並對每一段摺疊串 dp 求出最小值,以求出整體摺疊後的最小值,並與前面的區間 dp 後的最小值比較,以求出區間最優解。
合併遊戲 737 區間Dp
石子合併 一 時間限制 1000 ms 記憶體限制 65535 kb 難度 3 描述 有n堆石子排成一排,每堆石子有一定的數量。現要將n堆石子並成為一堆。合併的過程只能每次將相鄰的兩堆石子堆成一堆,每次合併花費的代價為這兩堆石子的和,經過n 1次合併後成為一堆。求出總的代價最小值。輸入 有多組測試資...
hdoj5115 區間DP 基礎
題意 有n頭wolf排成一排,殺一頭wolf回受到受到的傷害 它的本身a i 相鄰兩個b i 1 b i 1 然後殺死第k個位置的wolf的話,k 1和k 1預設相鄰 滿足的話 思路 用雨巨的話說 完全orz 這不就變成區間dp水題了麼 dp i j 表示從第i頭狼到第j頭狼全部被殺死所受到的最小傷...
poj1651 區間DP 基礎
題意 給你一串數字,頭尾不能動,每次取出乙個數字,這個數字貢獻 該數字與左右相鄰數字的乘積,求乙個最小值。思路 用dp s t 去代表s到t的最小值,包括a s 和a t 然後從區間為3開始列舉,對每個小區間列舉乙個取出的數,狀態轉移方程就是 dp s t min dp s k dp k j a i...