區間dp就是區間上的dp,先算出小區間的最優解,再由小區間合併推出大區間的最優解。
#include#include#include#includeusing namespace std;
const int inf=0x3f3f3f3f;
const int maxn=1010;
int n;
int a[maxn],sum[maxn];
int s[maxn][maxn],dp[maxn][maxn];
int main()
// 從小區間向大區間進行遞推
for(int d=1;d和直線形差不多,我們需要處理出來間隔為n-1的所有可能,所以區間擴大為2*n-1進行處理,然後取dp[i][i+n-1]的最小值。
#include#include#include#includeusing namespace std;
const int inf=0x3f3f3f3f;
const int maxn=1010;
int n;
int a[maxn],sum[2*maxn];
int s[2*maxn][2*maxn],dp[2*maxn][2*maxn];
int main()
for(int i=n+1;i<2*n;i++)
// 從小區間向大區間進行遞推
for(int d=1;d二、括號匹配問題。
三、整數劃分問題。
區間DP入門
區間dp,看名字其實會聯想到劃分dp,其實兩者的關係並不大。劃分dp是從頭到尾劃分解決,並且有劃分數量,而區間dp沒有這些限制條件,可以從任意區間開始,一直擴大到整個區間。不斷遞推求解。同樣也是分兩步去做。首先 還是進行資料處理,比如用陣列sum i j 去儲存i到j的和,或者是用別的方式處理並儲存...
區間DP入門
今天學長給我們講了區間dp,當然聽得雲裡霧裡,講完之後基本處於自閉狀態,然後還是自己到大佬的部落格,然後看部落格,但是並沒有找到很詳細的部落格,所以我想自己寫一寫,大神們勿噴哈.一 定義 區間dp,顧名思義是在區間上dp,它的主要思想就是先在小區間進行dp得到最優解,然後再利用小區間的最優解合併求大...
區間DP入門
給你乙個只含小寫字母的字串,每次只能刪除一段含有一樣字母的區間,問最少刪多少次,才能刪除整個字串 第一次做區間dp 所以記錄詳細點 適合新手 我們用dp i j 代表把區間 i 到 j 完全刪除需要的次數 狀態轉移方程 if s i s j dp i j dp i 1 j 1 1 兩頭一樣,我們把中...