關於CSP J和區間dp入門注意事項

2021-09-29 10:39:52 字數 798 閱讀 7657

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...