不知道爲何,剛學的算法過了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
插頭。插頭仍是挺簡單的,就是一個板子,隨着題目的變化稍微修改一下就好。example:Tony's Tour學習
容斥套着,到了考場也不知道會不會作 ╮(╯_╰)╭。example:局部極小值大數據
寫成記憶化搜索的形式會好不少,注意該開LL的時候開LL。example:Balanced Number
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時換根是爲了搞清楚兩點之間的父子關係。帶邊權的換成點。example:魔法森林
LCT維護可加減子樹信息,若是不是可加減的就只能toptree了。注意在輕重邊替換的時候同時更新信息。example:共價大爺遊長沙
ntr的妙用= =。example:CC某題
一類問題的通用解法,分類維護前綴信息和後綴信息。example:城市旅行
能不寫最好仍是不要寫吧,輕鬆被卡→_→,也許能夠出奇制勝?若是要寫,從新構樹是個不錯的選擇。發現大數據跑不過,多半是剪枝掛了。
平面上最近(最遠)點對。example:SJY擺棋子
範圍內點權查詢,暴力重構。example:簡單題
神應用,怒艹一類數據結構題。example:A simple rmq problem
扣區間$[l,r]$的時候,把$l+1$Splay到根,$r+1$Splay到根的右兒子,然而加了「哨兵」,其實是$l$和$r$。
rotate和Splay記得要加取地址符。
對區間操做完後記得pushup父親和根,pushup的時候size記得+1啊啊啊。
example:維護數列
好像沒什麼好說的,一些細節想清楚就行了= =。example:超級鋼琴
比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:可持久化並查集
樹狀數組套主席樹。實際上是樹狀數組套權值線段樹= =。
用來求解$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:元素
多推推式子轉化一下問題,從不可作變成可作。組合數公式的話大概用格點法推一推?$\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:跳蚤
沒啥好說的。。。板子題:阿狸的打字機
也沒啥好說的。。板子題:火星人
仍是沒啥好說的。。可能會有奇技淫巧吧。板子題:動物園
我已經不記得了。板子題:不知名
異或貪心相關。example:poj某題
trie樹合併,跟線段樹合併差很少。example:Alice和Bob又在玩遊戲
基本的論文二分答案+按照height分組的思想。example:milk patterns
單調棧。example:CS
後綴自動機求後綴樹組。example:板子題
雙向鏈表。example:生成魔咒
分割點。example:mrs
看起來很強可是很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:隨機數生成器