區間dp入門

2021-09-10 23:34:05 字數 736 閱讀 7450

區間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 兩頭一樣,我們把中...