1. 程式人生 > >2018自我剖析

2018自我剖析

搜尋

未掌握的:極大極小搜尋
不太熟練的:A*,迭代加深
要掌握搜尋方面剪枝的技巧,不光是判斷方面,搜尋的順序,方式對時間都有很大影響
應該分析以什麼樣的方式,順序去搜索最優,剪掉哪些無用的狀態。

DP

未完全掌握的:插頭DP
不太熟練的:計數DP,期望DP,矩陣優化DP
主要是在設計狀態這一方面,思維容易僵化,並且不太清楚什麼時候該套DP上去。
計數方面主要是把握一個主體,構造它使得滿足條件,一般方法還有補集轉化,容斥原理(怎麼DP都沒用的時候就想想容斥)。
期望方面主要是注意一個期望的線性可加,是考慮單獨算出每個的期望加起來,還是算出概率,然後用總貢獻去乘,以及普通的期望DP。
矩陣方面,不熟的主要是那種把所有狀態搜尋出來,然後用矩陣轉移的題目。若是線性遞推或有向圖之類的轉移一般都可以用矩陣優化。

數學

未掌握:類歐幾里得
不太熟練的:Min_25,關於一些積性函式的題,稀奇古怪的推式子題
多注意式子的特性,函式的特性,適當的時候可以引入一些新函式幫助推導。如果是積性函式的題目,多考慮Min_25和狄利克雷卷積,杜教篩。

圖論

未掌握:斯坦納樹,支配樹,上下界網路流,差分約束。
多多考慮一下圖的性質,如在樹上的就是直徑和重心的性質,這些在遇到題目關於最遠點,聯通塊之類的多考慮,一般跟它有關。樹上路徑點分治,dsu on tree。圖上路徑,最短路,縮環,圓方樹。

字串

SAM,PAM和一些資料結構結合在一起,和一些圖有關的東西結合在一起,學會熟練運用它們的性質。

多項式

DP轉移拆卷積,拆不成或難統計的就上生成函式。

資料結構

不熟練的:LCT
主要是弄清楚維護什麼,什麼資訊沒用,如何維護,需要其他的什麼?時間上被侷限時考慮適當的預處理。然後設定閾值(一般在資訊有特殊性質,並且其他做法達不到好的時間複雜度時運用),按大小分類的都要學會運用。

一定要多看看思維題(DP之類的),不要讓思維被侷限住了。結合自己的直覺,想法,理性分析。