快一個月不更博的時候氵一篇博客html
http://www.javashuo.com/article/p-rinxrftr-cz.html算法
邊數小於點數的無向連通圖是一棵樹nmdwsmduliuyyb函數
全部簡單環都是奇環的圖是仙人掌。spa
競賽圖縮點以後是一條鏈。.net
(邊權都是\(1\))任意兩點間最大流不超過\(x\)的圖能夠劃分爲不超過\(x\)個生成森林。code
看到平面圖(包括網格圖)的時候想想對偶圖轉化。htm
費用流增廣的時候,每一次作完以後的費用和是一個凸函數,能夠利用這個性質作一些二分之類的事情。模擬費用流類問題的貪心正確性也能夠嘗試着從費用流模型推導過來。blog
最長反鏈長度=最小鏈覆蓋數排序
涉及不少概念,看這個博客字符串
一張圖的全部可能的MST中,每一種邊權的數量都分別是同樣的;
Kruskal加邊的時候,對於一樣邊權的邊,不管它們中間以什麼順序加邊,最後的連通性都是同樣的。
MST有很多性質,在某些題裏面,能夠巧妙地對邊重賦權、更改端點等而不影響MST,最後更方便的求解答案。
第一類Stirling數能夠用一個卷積表示,\[s(n,m)=[x^m](\prod\limits_{i=0}^{n-1}(i+x))\]
對於給定\(n\)求全部\(s(n,m)\)的樸素方法是分治FFT,但這個式子能夠經過倍增\(O(n\log n)\)求出。
假設咱們求出了\(F_t(x)=\prod_{i=1}^n(x+i)\),如今要求\(F_{t+1}(x)=\prod_{i=1}^{2n}(x+i)\),咱們有
\[F_{t+1}(x)=F_t(x)F_t(x+n) \\F_t(x+n)=\sum_{i=0}^na_i(x+n)^i \\=\sum_{i=0}^n\sum_{j=0}^ia_i\binom ijx^jn^{i-j} \\=\sum_{i=0}^n\sum_{j=0}^ii!a_i\frac{x^j}{j!}\frac{n^{i-j}}{(i-j)!} \\=\sum_{j=0}^n\frac{x^j}{j!}\sum_{i=j}^ni!a_i\frac{n^{i-j}}{(i-j)!} \\=\sum_{j=0}^n\frac{x^j}{j!}\sum_{i=0}^{n-j}(i+j)!a_{i+j}\frac{n^i}{i!} \]
兩遍FFT就出來了。
關於冪、組合數和第二類Stirling數的兩個很經常使用的式子,彷佛有着美妙的聯繫
\(m^n=\sum\limits_{i=1}^mi!S(n,i)C(m,i)\)
\(S(n,m)=\frac1{m!}\sum\limits_{i=1}^m(-1)^{m-i}C(m,m-i)i^n\)
由於冪(\(m^n\))的組合意義就是\(n\)個有標號球放到\(m\)個有標號盒子的方案數,Stirling數是放到無標號盒子且盒子非空的方案數,因此就能夠用組合意義解釋第一個式子:
球有序盒有序容許空盒的方案數,等於枚舉非空盒的個數\(i\),將盒無序的方案數乘上階乘使其有序,再乘上從全部盒中選出這\(i\)個的組合數(或者直接說是排列數也行)。
第二個式子彷佛就是倒着考慮這個組合意義,每次從容許空盒方案中減去有盒爲空的方案數,再除掉階乘使其無序。
這樣聯繫起來彷佛好記多了。
無向圖:求的是圖的生成樹個數。
度數矩陣-鄰接矩陣,即對於邊\((u,v)\),++a[u][u],++a[v][v],--a[u][v],--a[v][u]
。
任意消去一行一列求一個代數餘子式的值。
有向圖:求的是樹形圖個數,須要區分外向樹和內向樹。
內向樹是入度矩陣-鄰接矩陣,即++a[u][u],--a[u][v]
,外向樹把邊反過來就好了。
消去第\(i\)行第\(i\)列能夠求出以\(i\)爲根的樹形圖個數。
KMP的next和迴文樹的fail均可以劃分紅\(\log\)段等差數列。
用二哈求SA的時候請使用stable_sort
。
蒟蒻猜想sort
的底層實現主要是快速排序,stable_sort
主要是歸併排序。
基於猜想,它相比sort
有兩倍的空間佔用,但比較次數少。在比較爲算法複雜度瓶頸時常數小了一大截。窩和Cgod都有過被卡的經歷。。。