經驗積累

開考首先看下封面上各題的空間時間,開不開O2,有沒有特殊說明  用不了多少時間但頗有必要。c++

以後過遍題面,估計下難度、思考方向,決定開題順序數組

優先級:網絡

1.裸題數據結構

2.簡單題測試

3.以後大概按題目順序大數據

對於一道題:有高分普適暴力先打(特殊高分也可打),打的時候看可否優化,正解10min無思路跳下一題,有思路就實現,而後開拍進下一題。優化

如此三道題差很少能在比較短的時間內拿到保底分並且留有餘地。spa

而後再按思考深度進題,實在沒思路且沒時間,打特殊部分分,對於不能處理的大數據範圍,隨機化 亂搞。.net

紅字可以避免押寶、心態爆炸。想不出正解,我有暴力分。想的出,我立刻就能夠打拍,即便先打正解,我也照樣要打暴力對拍。如此穩賺不虧。c++11

ps:前段時間押寶虧大了長記性。

10.5受挫我又來補充了。。。

不要被同桌帶節奏,心態穩住,按照本身的節奏,遵守上面所說的。

記得測試極限數據,防止RE TLE,同時size測一下,防止MLE

若是有操做只會更優,最好打上

最後十分鐘檢查:

1.freopen fclose

2.數組大小

3.long long

4.輸出格式(換行、空格、SPJ格式、保留小數)

5.是否交對程序

6.c++11

 

 


思考方向:

 

比較像是dp的題:

首先考慮dp,看能不能設出合法狀態,列轉移方程,若是複雜度能拿到必定的部分分就先打。打完記得觀察式子,看能不能優化(前綴和,數據結構...)

若是dp狀態數太多或者很是很差列狀態,考慮貪心,如要反悔考慮堆和網絡流。

最優化問題可試一下能不能套最短路

有時候結合個網格圖會寫成拓撲排序,其實本質就是dp,然而拓撲不能優化。

複雜度太高,dp相似用n+m個權值不一樣且n和m分別有數量限制的物品填揹包還有特殊限制(有x個在mst,同一物品在不一樣回合權值不一樣),考慮wqs二分。  這個太抽象,胡了

狀壓dp要考慮轉移複雜度

 

 

圖論:

純圖論->結合考點(拓撲排序,連通份量...雙連通,割點,割邊性質...)

基環樹拆環成樹 dp

 

機率指望:

機率正推,指望逆推

有後效性,先列高斯消元,複雜度炸看能不能推出轉移係數(單層轉移,每一個狀態只由一個變量轉移,只在兩側成環)。

《記憶的輪廓》《樹》這種樹上瞎走題,歸無序到有序,求出一個點向上向下走移動一步的指望,而後倍增處理全部移動。

機率轉移要包含全部可能的狀況《山屋驚魂》、《Cicada 與排序》

 

 

數論:

提出gcd,轉化互質,斷定範圍,求出變元個數,注意重複。例子《神炎皇》模擬6七、《木板》模擬70

[1,n]有n/i個數能被i整除

 

 


轉換後的經典模型:

判線段徹底覆蓋:

小值域差分數組

大值域線段以左端點sort,貪心取max,看是否存在一個時刻max<l-1

 

求最大的區間和點的匹配(區間包含點,且只能兩兩匹配)

暴力:跑匈牙利最大匹配$nm$,dinic彷佛是$m \sqrt{n}$?

貪心:sort點,掃的過程當中加入(set、堆)越過左端點的區間,在合法中貪心匹配右端點最左的。

 

最小點覆蓋

非樹下是NP徹底問題

樹,設dp[u][0/1]爲u選或不選,而後轉移便可

 

約瑟夫問題:

n我的,每次m步,求最後贏家

倒推式子,結論 for i 2->n ans=(ans+m)%i

ans=ans+1

當m很小,n很大的時候能夠優化(跳過等差數列)。

 

無環圖中,點數-邊數=連通塊數

 

 


 數據結構:

 

線段樹:

1.區間加減 max min 異或

區間異或+查和,每一個節點維護位桶(區間內該位爲1的值的個數)

2.最大連續x區間及位置

3.以時間爲下標維護操做,支持logn更改某個操做並獲得更改後最後的結果

4.區間操做,查詢一個點上擁有的操做。

  作法:把區間操做拍在序列線段樹上,到L<=l&&r<=R就加到這個節點上,單點查的時候累計全部路徑區間答案。

  一樣可視爲分治樹。

5.優化建圖:對於區間加邊的題。

spe權值線段樹:

1.前驅後繼、rank、kth。見模擬68

 

 

主席樹(可持久化權值線段樹):

區間某答案

樹上按深度建主席樹,支持快速查詢某個子樹d深度答案

支持樹鏈上建主席樹+lca合併信息。

區間前驅後繼、rank、kth。

 

 

---摘自「Freopen」的原創文章

樹狀數組能幹的事:

1:快速簡潔求解前綴最值
2:快速簡潔求解前綴和,單點修改區間和,區間修改單點值。
3:並不簡潔的求解區間修改區間求和(但也比線段樹簡潔)
4:快速維護樹上每一個點到根的路徑權值和
5:快速維護樹上每一個點的子樹和(與4不兼容)
6:用來輕鬆愉快的套主席樹,Splay等各種動態數據結構
7:維護帶刪除\插入操做的排名,不過須要二分,兩個log不推薦,推薦線段樹一個log

 

 

並查集:

維護相等關係

按秩合併:把大的接到小的後邊,撤銷操做見模擬58的Dash Speed

 

 


 

性質

1.對於和必定的一個集合,集合中不一樣的數的個數不超過$\sqrt{n}$

 

 

 

 


雜項

 

提示點:

圖上n==m      基環樹

i和[1,i-1]有關係    樹型

最小值最大,最大值最小  二分

複雜度:

n=

10     $n!$  狀壓

20     $2^n$

30~40   $2^{\frac{n}{2}}$ Meet In The Middle

100    $n^3$ 、 $n^3logm$(矩陣快速冪,m=1e18)

1000~5000  $n^2$ 、 $n^2logn$

1e5    $nlogn$ 、 $nlog^2n$   $n\sqrt{n}$(極限,估計要開2s)

1e12 1e14  $\sqrt{n}$

 

數值:

5e7 1s穩過

1e8 小常數1s可過

 

 

常見處理:

1.區間加減、異或最後查詢  差分數組|||在線修改查詢  樹狀數組

2.維護帶絕對值的最值    拆,維護四個

3.求字典序第k小       26進制下的k-1

4.平均值相關        減去平均值,以後前綴和等操做,通常要二分平均值

5.異或相關         按位維護

6.數組下標與值的含義互換   常見於大費用小權值揹包dp

7.什麼先於什麼,求最優    拓撲+貪心(堆實現)

注意字典序最小!=小的數優先最靠前

前者直接小根堆跑拓撲,後者大根堆求字典序最大再反過來(原理?有時間再細想一想)。

 

 


騷操做

見小限制輸入,可打表。

分塊打表:把答案分塊,對大塊打表,使不足一塊的部分的複雜度合法。同時也保證了表不會很大。

 

 

 

 

 


NP徹底問題

哈密爾頓迴路

最小點覆蓋

DAG求拓撲數

 

 

yeshi錯誤:

快速冪注意邊界,注意乘爆,先取模。

n*(n-1)說明有重邊

能用鄰接表不用鄰接矩陣

別交錯程序

 

 

最後,不要頹廢。

相關文章
相關標籤/搜索