區間dp自學總結

      簡單看了一下區間dp的課件,總結一下,思路大體上是懂了,就是做題略顯吃力。
     區間 DP是指在一段區間上進行的一系列動態規劃。 對於區間 DP 這一類問題,我們需要計算區間[1,n] 

的答案,通常用一個二維數組 dp 表示,其中 dp[x][y] 表示區間[x,y] 有些題目,dp[l][r] 由 dp[l][r−1] 與 dp[l+1][r] 推得;也有些題目,我們需要枚舉區間 [l,r] 內的中間點,由兩個子問題合併得到,也可以說 dp[l][r] 由 dp[l][k] 與 dp[k+1][r] 推得,其中 l≤k<r。 對於長度爲 n 的區間 DP,我們可以先計算 [1,1],[2,2]…[n,n] 的答案,再計算 [1,2],[2,3]…[n−1,n],以此類推,直到得到原問題的答案。 主要就是幾個模式型的問題,根據題意不同往上套就完事了
NOI 1995 石子合併,題目本身不再贅述,直接上狀態轉移方程
dp[i][j]=min(dp[i][k]+dp[k+1][j])+sum[j]−sum[i−1] 解題思路如下
求兩堆的最小代價,再求出三堆的最小代價,以此類推得出最終的最小代價。用 dp[i][j] 來表示合併 i 到 j 區間裏的石子的最小代價。按區間長度從小到大的順序進行枚舉來不斷讓石子進行合併,最終就能獲得合併成一堆石子的最小代價。sum[j]-sum[i-1]表示合併第i堆和第j堆所需的總時間。
括號配對題,講真的一開始並沒有搞懂題意,後來去CSDN查了一下具體題目,
BE中有一類被稱爲 GBE以下是 GBE 的定義:
1.空表達式是 GBE
2.如果表達式 A是 GBE,則 [A]與 (A)都是 GBE
3.如果 A與B都是GBE,那麼AB 是GBE給定BE
問最少添加多少字符可將其變爲 GBE字符串長度小於100
這個就是很常規的區間DP,感覺沒什麼好說的對於 f[i][j]f[i][j] ,先討論 s[i]s[i] 與 s[j]s[j] 是否可湊成一對中括號或小括號,如果可以的話 f[i][j]=f[i+1][j−1]f[i][j]=f[i+1][j−1]接着 f[i][j]=max{f[i][k]+f[k+1][j]}從i到j。
剩下的模型題沒有看完或者理解的不夠透徹,不寫入總結。
明天開始寫題目了,fighting!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章