1.看題目時必須仔細,例如陣列的大小在空間允許的情況下,多開10倍
2.如果採用暴力演算法,記得剪枝或者記憶化
for..
.//列舉區間長度
for...
//列舉左右兩個端點
for...
//列舉斷點,或者直接dp
dp方程
1.運用陣列,靈活表示當前的狀態例如p1880 [noi1995]石子合併
設定f1[i][j]
代表第i~j這個區間,石子合併的最大值
設定f2[i][j]
代表第i~j這個區間,石子合併的最小值
通過題意得知,總價值=合成石子的數量的和
所以列舉乙個中間點(斷點)
f[i][j]=max(f[i][j],sum斷點左邊+sum斷點右邊+合成的收益);
dfs
(引數)
首先 你需要乙個好老師先寫出暴力,再加以改進
dfs
(引數)
我們可以發現暴力和記憶化的模板只差幾句話 區間DP入門
區間dp,看名字其實會聯想到劃分dp,其實兩者的關係並不大。劃分dp是從頭到尾劃分解決,並且有劃分數量,而區間dp沒有這些限制條件,可以從任意區間開始,一直擴大到整個區間。不斷遞推求解。同樣也是分兩步去做。首先 還是進行資料處理,比如用陣列sum i j 去儲存i到j的和,或者是用別的方式處理並儲存...
區間DP入門
今天學長給我們講了區間dp,當然聽得雲裡霧裡,講完之後基本處於自閉狀態,然後還是自己到大佬的部落格,然後看部落格,但是並沒有找到很詳細的部落格,所以我想自己寫一寫,大神們勿噴哈.一 定義 區間dp,顧名思義是在區間上dp,它的主要思想就是先在小區間進行dp得到最優解,然後再利用小區間的最優解合併求大...
區間dp入門
區間dp就是區間上的dp,先算出小區間的最優解,再由小區間合併推出大區間的最優解。include include include includeusing namespace std const int inf 0x3f3f3f3f const int maxn 1010 int n int a m...