線性dp
區間dp
計數類dp
數字統計dp
狀態壓縮dp
樹形dp
其他總結
本週拓展題
本週主要複習揹包問題,線性dp,區間dp,計數類dp,數字統計dp,狀態壓縮dp,樹形dp,記憶化搜尋等內容。
二維
for
(int i =
1; i <= n; i ++
)for
(int j =
0; j <= m; j ++
)
一維
for
(int i =
1; i <= n; i ++
)for
(int j = m; j >= v[i]
; j --
)//逆序
f[j]
=max
(f[j]
, f[j - v[i]
]+ w[i]
);
for
(int i =
1; i <= n; i ++
)for
(int j = v[i]
; j <= m; j ++
)//正序
f[j]
=max
(f[j]
, f[j - v[i]
]+ w[i]
);
二進位制優化,優化後變為01揹包問題
for
(int k =
1; k <= s; k *=2
)//s是限制數量);
}if(s >
0) t.
push_back()
;
f[1]
=1;//f[i]表示以第i位結尾的最長長度
for(
int i =
2; i <= n; i ++
)int res =0;
for(
int i =
1; i <= n; i ++
) res =
max(res, f[i]
);
//f[i][j]表示所有從a[1 ~ i],b[1 ~ j]且以b[j]結尾的公共子串行的最大長度
for(
int i =
1; i <= n; i ++
) f[i]
[j]=
max(f[i]
[j], maxv);}
}}int res =0;
for(
int i =
1; i <= m; i ++
) res =
max(res, f[n]
[i])
;
一般外層迴圈從小到大列舉區間長度,內層迴圈列舉左端點的位置。
f[i][j]
表示區間(i, j)上的某種性質。
主要思路:分類討論。
依次列舉每個數字可能出現的情況。
一般問題是求區間(a, b)內滿足某條件的數的個數,可轉換為f(b) - f(a - 1)
,其中f(n)
表示從0 ~ n區間內滿足條件的個數。(類似字首和的思想)
一般n的範圍較小,可以用二進位制數枚舉出所有可能出現的情況。
向下搜尋(類似題目:大臣的旅費)
//d1、d2陣列分別是向下的最遠距離和次遠距離,p陣列記錄最遠距離的路徑
void
dfs_d
(int u,
int fa)
//通過子節點更新父節點
else
if(d > d2[u]
) d2[u]
= d;}}
}
向上搜尋(類似題目:樹的中心)
//up陣列是向上的最遠距離(反方向),p陣列記錄最遠距離的路徑
void
dfs_u
(int u,
int fa)
//通過父節點更新子節點
}}
快速冪函式的返回型別和引數型別最好統一,否則在計算過程中要進行型別轉換。
其他問題轉換為揹包問題時,有幾個限制就要用幾維的陣列,再對空間進行優化。
迭代器遍歷vector:for (auto i = v.begin(); i != v.end(); i ++ ) // 若為int型vector,迭代器型別為vector::iterator
使用迭代器刪除元素:v.erase(i); // i為迭代器
使用迭代器訪問元素:auto t = (*i); // i為迭代器
以下題目均**於acwing**揹包1:1022. 寵物小精靈之收服
揹包2:7. 混合揹包問題
線性dp:272. 最長公共上公升子串行
區間dp:479. 加分二叉樹
計數類dp:306. 傑拉爾德和巨型象棋
數字統計dp:1081. 度的數量
狀態壓縮dp:1064. 小國王
樹形dp:1073. 樹的中心
記憶化搜尋:898. 數字三角形
本週總結and下週規劃
專案互動,還沒有完成,還有一天時間,我要盡快在這週內完成我需要完成的部分,然後給我們這個專案再好好完善完善 四級 作文,現在準備,真題刷了有兩套,慘不忍睹。1 聽力 第一套迷迷瞪瞪彷彿在聽火星語言,完全沒有思路,不理解,只能聽到哪個,選項裡正好有就選誰,第二套好點了感覺有點做題思路了 2 閱讀理解 ...
本週總結and下週規劃
細看專案,感覺還需要加很多東西,為了整個專案的完整性,使用者更好的體驗感,我們還得繼續幹!vue它已經拖太久了,我準備轉戰期末複習 我大概總結了乙個文件,怎麼說呢今天 週日 早上,感覺不太方便去看,所以,還需要完善完善,用於下午考核 期末複習太艱難了,不行不行,得擠出時間,不要再去做那些沒必要做得事...
動態規劃總結
華電北風吹 天津大學認知計算與應用重點實驗室 日期 2015 12 7 近期學了幾個動態規劃正好總結一下。裡面不涉及具體問題的具體解法,有問題可以參看我的具體型別的講解部落格。目前所見動態規劃可以劃分為兩類 鏈式和樹形。而且這兩類中的每個節點都是乙個完整的狀態集合。一 鏈式動態規劃 鏈式動態規劃的題...