總結與心得(持續更新) Tony's Tour 簡單題 A simple rmq problem 最小圈 tree 荷馬史詩 泡泡堂BNB

不知道爲何,剛學的算法過了2個月就忘得一乾二淨,我並無背代碼啊,當時學的時候還刷了好多題來着→_→,我是否是大腦能力嚴重衰退了。html


動態規劃

單調隊列

  通常狀況下,${dp}$方程能夠搞成這樣:${f_i=f_j+t_j+t_i}$,只要其中沒有變量同時與${i,j}$都有關,那麼咱們能夠用單調隊列來作,單調隊列裏面元素的關鍵字就是與${j}$有關的東西${f_j+t_j}$。example:生產產品算法

  有些比較特殊的,雖然存在同時與${i,j}$相關的函數,可是這個函數比較簡單,使得已經存在在單調隊列中元素的相對位置不會所以改變,這樣的話咱們能夠打一個全局標記來處理。example:瑰麗的華爾茲數組

  還有一些比較奇葩的,這已經不屬於單調隊列優化dp的範疇了。example:cut the sequence網絡

斜率優化

  想當年我還寫過學習筆記,如今毛都不記得了T_T,斜率優化學習筆記。反正套路都差很少,不過我仍是更喜歡從函數的角度去理解斜率優化。數據結構

  斜率單調。example:特別行動隊ide

  斜率不單調。example:購票函數

  橫座標不單調。example:貨幣兌換post

狀壓dp

  插頭。插頭仍是挺簡單的,就是一個板子,隨着題目的變化稍微修改一下就好。example:Tony's Tour學習

  容斥套着,到了考場也不知道會不會作 ╮(╯_╰)╭。example:局部極小值大數據

數位dp

  寫成記憶化搜索的形式會好不少,注意該開LL的時候開LL。example:Balanced Number


prufer

  prufer序列中每一個數出現的次數就是它在樹中的度數-1。example:明明的煩惱

  常常用來作樹的計數一類dp。

樹分治

  點分治。關鍵是對答案的統計用什麼算法和數據結構進行處理。example:Tree

  有的時候,必定要當心的就是掃把型的樹,若是不對子樹進行排序,很容易就會被卡掉。example:重建計劃

  動態樹分治。沒什麼好說的,也許我沒作過什麼題。example:開店

  樹上CDQ。example:購票

樹鏈剖分  

  樹鏈剖分的性質(一個點到根節點的路徑上的輕變不超過$log$條)可能有些奇技淫巧。

  最簡單的維護樹上路徑修改查詢。example:軟件包管理器

  dsu on tree。其實就是樹鏈剖分維護啓發式合併,在某些狀況下特別好寫= =。example:每天愛跑步

  長鏈剖分維護合併跟深度有關的信息。複雜度證實:每次合併的次數是這個節點連出的輕邊的點所在的重鏈的大小,那麼每條重鏈最多隻會被記錄一次,因此總合並次數是$O(n)$。據說還能$O(n)$求lca。example:坑着

虛樹

  虛樹就是隻含有查詢點以及它們lca的點的樹,每每與樹形dp一同食用。虛樹的題目每每其詢問點的總數不會超過某個值,必需要知足在虛樹上dp能夠下降複雜度。教程?

  example:世界樹

Link Cut Tree

  link的實質是找到父親,cut時換根是爲了搞清楚兩點之間的父子關係。帶邊權的換成點。example:魔法森林

  LCT維護可加減子樹信息,若是不是可加減的就只能toptree了。注意在輕重邊替換的時候同時更新信息。example:共價大爺遊長沙

  ntr的妙用= =。example:CC某題

  一類問題的通用解法,分類維護前綴信息和後綴信息。example:城市旅行


數據結構

KDtree

  能不寫最好仍是不要寫吧,輕鬆被卡→_→,也許能夠出奇制勝?若是要寫,從新構樹是個不錯的選擇。發現大數據跑不過,多半是剪枝掛了。

  平面上最近(最遠)點對。example:SJY擺棋子

  範圍內點權查詢,暴力重構。example:簡單題

  神應用,怒艹一類數據結構題。example:A simple rmq problem

Splay

  扣區間$[l,r]$的時候,把$l+1$Splay到根,$r+1$Splay到根的右兒子,然而加了「哨兵」,其實是$l$和$r$。

  rotate和Splay記得要加取地址符。

  對區間操做完後記得pushup父親和根,pushup的時候size記得+1啊啊啊。

  example:維護數列

ST表

  好像沒什麼好說的,一些細節想清楚就行了= =。example:超級鋼琴

treap

  比Splay好寫一些樹套樹方便一些能夠持久化。思想仍是蠻簡單的,隨機一個權值保證logn的指望樹高。

  非旋轉版如今還策不清,若是真的考了可持久化treap那我仍是早早棄療吧=  =。example:普通平衡樹

分塊

  一般用來優化暴力。

  樹上分塊。example:王室聯邦

  權值分塊。example:dispatching

  優化暴力。example:最小公倍數

  數據有一些特點的,能夠分兩類:$ > \sqrt{n}$和$ < \sqrt{n}$,分別處理與複雜度分析,而後基本不等式搞一搞取最優塊大小。好像沒有什麼好的例子。。example:普通計算姬

可並堆

  好寫好調好理解,代碼簡短。example:disoatching

鏈表

  雙向鏈表大法好。example:營業額統計

啓發式合併

  把size小的往size大的裏面丟,合併次數$logn$。example:森林

  貌似寫過的啓發式合併都是直接set了=。=

樹套樹

  二維線段樹。example:魔幻棋盤

  線段樹套treap。example:二逼平衡樹

樹狀數組

  區間修改。example:poj某題

線段樹

  呵呵,線段樹上各類耍雜技=  =。

  維護連通性。example:堵塞的交通

  掃描線結合。example:Picture

  二維線段樹。單點修改矩形查詢,example:魔幻棋盤;矩形修改單點查詢;能夠直接標記可持久化,example:樹狀數組

  蜜汁思路。example:基礎數據結構練習題

  線段樹合併。example:CF 666E

  超哥線段樹。example:robot

  區間取最值操做。example:hdu某題

  歷史最值查詢。example:CPU監控

  還有個勁(j)爆(b)玩意兒如今都還不懂。example:CF某題

主席樹

  ntr的妙用=  =。example:CC某題

  優化網絡流連邊。example:a+b problem

  可持久化數組。example:可持久化並查集

  樹狀數組套主席樹。實際上是樹狀數組套權值線段樹=  =。


數學

BSGS

  用來求解$a^x=b~(mod~p)$,所謂大步小步。可能出現無解的狀況。example:板子題

多項式乘法

  注意數組大小,以及最後除一個$n$。循環卷積注意細節變更。轉成整型的時候不要爆了int。板子一套:多項式乘法

  求解字符串匹配問題。example:萬徑人蹤滅

  預處理$ω$增強精度,任意模數FFT,倍增優化dp。所謂倍增優化,就是$f_i$能夠由$f_x$和$f_y$推過來($x+y=i$)。example:CF某題

  離散對數NTT,循環卷積,求解原根,倍增優化dp。

  所謂循環卷積,就是在DFT回來統計答案的時候,除了加上對應位置$x$上的卷積結果,還要再加上$x+m-1$位置上的卷積結果。example:序列統計

博弈論

  當前局面的SG等於後繼狀態的SG的$mex$,當前遊戲的SG等於各個子游戲的SG狀態的$xor$。大都是腦洞題,考場上只能看人品了。。

  求解SG函數。example:江南樂

  暴力求解SG,找規律。example:S-NIM

高斯消元

  模意義高斯消元,其實就是除的時候乘個逆元。example:SETI

  線性基相關。example:XOR

  線性基性質。線性基中每個能夠被異或出來的元素的異或方案數相同(包括0)。example:albus就是要第一個出場

  動態構造線性基。example:元素

數學相關dp和組合計數

  多推推式子轉化一下問題,從不可作變成可作。組合數公式的話大概用格點法推一推?$\displaystyle \binum{n}{m}$表示從$(0,0)$走到$(n-m,m)$的方案。

  dp指望或者dp機率經過幾率算指望。example:亞瑟王

  精度要求不高的,能夠估算一下計算的次數。example:CF坦克大戰

  異或相關dp的正確AC姿式,雖然沒有什麼普適性。example:Lights

  二進制相關dp的正確AC姿式。通常先考慮排列方案最後再除個階乘會好不少。轉移的時候考慮到相等的狀況,須要容斥一發。example:facer's chocolate dream

莫比烏斯反演

  $mu[i]$,若是i的某個質因子指數大於$1$,$mu[i]=0$;不然,$mu[i]=(-1)^{i的質因子個數}$

  推式子的時候必定要當心,把一些東西提早的時候不要忘記乘或者除了個什麼東西。

  $\lfloor n/i \rfloor$,取值相同的$i$的範圍爲$[i,n/(\lfloor n/i \rfloor)]$。

  用來容斥,很棒棒哦。example:徹底平方數

  約數個數有一個比較經典的式子。example:約數個數和

  線性篩約數和。離線處理約束條件。example:數表

歐拉函數

  在線求歐拉函數。example:Longge的問題

  一個公式。example:Robot

  當$n>2$,$φ(n)$是偶數。example:上帝與集合的正確使用方法

置換

  Burnside:對於一個置換$f$,若存在一個着色方案$s$通過置換後不變,稱$s$爲$f$的不動點,等價類數目爲全部置換的不動點的平均值。example:Cards

  Polya:假設能夠有$k$種顏色,那麼一個置換$f$的循環內的元素的顏色必須相同,等價類的數目爲全部置換的$k^{循環個數}$的平均值。example:Let it bead

  一個是對染色方案考慮,另外一個是直接對置換考慮。

數論大合集

  費馬小定理優化矩陣乘法。example:矩陣遊戲

  Lucas,費馬小定理,中國剩餘定理。example:古代豬文

  Lucas用的時候要注意特判$m=0$,同時組合數記得特判$n<m$。模數不是質數的Lucas,就用古代豬文中的方法,分解質因數而後CRT合併。

  exgcd和CRT最好仍是用LL運算,否則怎麼掛的都不知道=。=

  暴力容斥。example:跳蚤


 

字符串

AC自動機

  沒啥好說的。。。板子題:阿狸的打字機

HASH

  也沒啥好說的。。板子題:火星人

KMP

  仍是沒啥好說的。。可能會有奇技淫巧吧。板子題:動物園

manacher

  我已經不記得了。板子題:不知名

trie

  異或貪心相關。example:poj某題

  trie樹合併,跟線段樹合併差很少。example:Alice和Bob又在玩遊戲

後綴數組

  基本的論文二分答案+按照height分組的思想。example:milk patterns

  單調棧。example:CS

  後綴自動機求後綴樹組。example:板子題

  雙向鏈表。example:生成魔咒

  分割點。example:mrs

後綴自動機

  


思想

CDQ分治

  看起來很強可是很simple的一個玩意兒。

  CDQ圖分治。example:城市建設

  CDQ上樹+維護斜率優化dp。example:購票(這題出現頻率真高=  =)

  一道還不錯的題。example:共點圓

  四維偏序。example:偏序

倍增

  沒啥好說的,注意邊界細節。

  神題一道。example:會議中心

  倍增優化dp,相似快速冪。example:序列統計

莫隊算法

  莫隊仍是挺靈活的,各類升級版本都有=  =。

  樹上莫隊。example:糖果公園

  在線莫隊。其實就是預處理出來n個詢問,而後每次讀入的詢問暴力移左右端點。example:坑

  江隊。只有插入或者刪除的莫隊。example:坑

  總之在考場上應該也能YY出來吧,必定要注意常數啊,一個小小的細節可能就葬送AC=。=

平面圖與對偶圖

  優化網絡流。example:海拔

  摳域和點定位。example:平面圖(話說看這毒瘤題真的大丈夫?=  =)

總體二分

  沒啥好說的。example:接水果


小技巧

  差分求解區間gcd。example:魔幻棋盤

  當答案是這種$ans=a/b$的形式,二分答案是個不錯的選擇。example:最小圈

  二分$delta$。example:tree

  兩個燻肉貪心題。哈夫曼;example:荷馬史詩。田忌賽馬;example:泡泡堂BNB

  圖的hash(話說這真的叫hash嗎,反正王隊長這麼說那我就跟風了=。=)。example:DZY loves Chinese

  弦圖。話說這玩意兒真的會考嗎。example:神奇的國度

  $O(1)$黑科技double快速乘。若是沒記住仍是龜速乘吧,寫錯一點都會GG。example:隨機數生成器

相關文章
相關標籤/搜索