OI學習筆記

2022-05-21 18:36:18 字數 1059 閱讀 4505

組合數遞迴求法:

$c_n^k = c_^k + c_^$

卡特蘭數:

$cat_n = cat_0cat_+cat_1cat_+...+cat_cat_1+cat_cat_0 =\fracc_^n$

手動開o2

#pragma g++ optimize (2)

費馬小定理

若p為質數,$a^p \equiv a \pmod p$

可用於求逆元

尤拉定理

若a,n互質,$a^ \equiv 1 \pmod n$

尤拉定理推論

若a,n互質,$a^b \equiv a^ \pmod n$

擴充套件尤拉

a,n不一定互質,當$b\geqslant\phi(n),\ \ a^b\equiv a^ \pmod n$

高精壓位,要輸出每乙個壓位的字首0。和特判結果為0的情況。

無向圖tarjan 用訪問過的點y更新low[x] ,不能用low[y]而要用dfn[y],因為前向邊(指向搜尋樹的節點)指向的節點y的low可能更小,那麼low[x]更新為low[y]就會走過搜尋樹上的邊,不符合low的定義。

scc:strongly connected components

end()指向最後乙個元素的下乙個元素

std::unique

功能:對有序的容器重新排列,將第一次出現的元素從前往後排,其他重複出現的元素依次排在後面

unique函式在使用前需要對容器中的元素進行排序

OI學習筆記 配對堆

配對堆是一種可並堆 可以將兩個堆合併,且速度快 時間複雜度 合併merge o 1 插入push o 1 彈出pop o logn 配對堆不是二叉堆 我一開始不知道這個所以一直搞不懂 配對堆存樹的方式不一樣,如圖,對於每個節點,有一條邊指向最左邊的兒子,一條指向他右邊的兄弟 和普通樹的對比 靈魂畫圖...

OI學習筆記 樹狀陣列

花了乙個上午,終於把樹狀陣列弄懂了。打了三種樹狀陣列的模板 樹狀陣列單點更新區間查詢,線段樹區間更新單點查詢,樹狀陣列區間更新區間查詢。第三種太毒了,好久才明白 就是樹一樣的陣列,它的底層實現其實就是乙個陣列,但是我們把它yy成了一棵樹。他的每一列的最頂端有乙個元素,而其他位置都是我們yy出來的,他...

OI計算幾何 簡單學習筆記

學習平面幾何,首先我們要會熟練地應用向量,其次也要知道一些基本的幾何知識。其實看看數學課本就可以了吧 因為是看的藍書,所以很多東西做了引用。update 還參考了趙和旭dalao的講義 下面先介紹一些常用的操作 struct point typedef point vecinline int dcm...