動態規劃(DP)
樹形DP
數學
位運算
異或
異或字首和
\( s(n)為1到n的數的異或和 \)
\( s(n) = \begin{cases} 1 , ~~~ n \% 4 == 1 \\ 0 , ~~~ n \% 4 == 3 \\ n , ~~~ n \% 4 == 0 \\ n + 1 , ~~~ n \% 4 == 2 \\ \end{cases} \)
程式碼實現如下:
auto xorprefix = [&](ll n) {
int flag = n % 4;
if (flag == 0) {
return n;
} else if (flag == 1) {
return 1;
} else if (flag == 2) {
return n + 1;
} else if (flag == 3) {
return 0;
}
};
數論
簡化公式
\( \sum\limits_{k = 1}^{n} k = \frac{n(n + 1)}{2} \)
\( \sum\limits_{k = 1}^{n} k^{2} = \frac{n(n + 1)(n + 2)}{6} \)
\( \sum\limits_{k = 1}^{n} k^{3} = (\sum\limits_{k = 1}^{n} k)^{2} = \frac{ n^{2} (n + 1)^{2} }{4} \)
裴蜀定理
\( 對於二元方程ax + by = c \)
\( 當且僅當c = gcd(a , b)時 \)
\( x , y 存在整數解 \)
\( 當c \neq gcd(a , b) \)
\( x , y 不存在整數解,但有非整數解 \)
推廣:
\(
一定存在整數x , y , 滿足ax + by = gcd(a , b) * n
\)
再推廣:
\(
一定存在整數\{ x_{i} \vert i \in [1 , n] \},滿足
\)
組合數學
排列組合
二項式定理
\(\tbinom{n}{m} = C_{n}^{m}\)
容斥原理
例題:求分母不超過n的所有最簡真分數的個數與他們的和 (n <= 1e6)
顯然有:
\( ans = \sum\limits_{a = 1}^{n} \sum\limits_{b = 1}^{a} ([b < a] * [gcd(a , b) == 1]) \)
\( = (\sum\limits_{a = 1}^{n} \sum\limits_{b = 1}^{n} [gcd(a , b) == 1]) / 2 \)
那麼只需求出n以內的互質對即可。即以1為最大公約數的數對
由容斥原理可以得知,先找到所有以1為公約數的數對,再從中剔除所有以1的倍數為公約數的數對,餘下的數對就是以1為最大公約數的數對。即f(k)=以1為公約數的數對個數 - 以1的倍數為 公約數 的數對個數。
如此,最簡真分數的個數就求好了,還需求出它們的和。
可以注意到,當(x,y)為互質時,(y-x,y)也互質。
那麼有這些最簡真分數的和就是它們的個數除以2。
程式碼實現如下:
ll nn = 2e6;
cin >> nn;
vector<ll> f(nn + 1);// f[i] 表示 gcd == i 的情況有幾種
for (ll k = nn; k >= 1; k--) {
f[k] = (nn / k) * (nn / k);//以k為公約數的數對
for (ll i = k + k; i <= nn; i += k) { //減去以k的倍數為公約數的數對
f[k] -= f[i];
}
}
ans1 = f[1] / 2;
ans2 = (double)ans1 / 2.0;
cout << ans1 << " " << ans2 << "\n";
卡特蘭數
通項公式:
遞推公式:
Catalan 特徵:
從(0,0)到(n,n),不越過對角線,即任何時候,向上走的步數不能超過向右走的步數。
一種運算元不能超過另一種運算元,或者兩種運算元不能有交集,這些操作的方案數通常是卡特蘭數
Catalan 應用:
1.一個有n個0和n個1組成的字串,且所有的字首字串滿足1的個數不超過0的個數。這樣的字串個數是多少?
2.包含n組括號的合法運算式的個數有多少?
3.一個棧的進棧序列為1,2,3,~,n,有多少個不同的出棧序列?
4.n個結點可構造多少個不同的二叉樹?
5.在圓上選擇2n個點,將這些點成對連線起來使得所得到的n條弦不相交的方法數?
6.透過連結頂點而將n+2邊的凸多邊形分成n個三角形的方法數?
圖論(graph)
弦圖(chord)
最大獨立集
https://oi-wiki.org/graph/chord/?query=最大獨立集
最小生成樹
need
DP
https://www.bilibili.com/video/BV1ir421T7ts/?spm_id_from=333.999.0.0&vd_source=31718b165e8ad5f16162c06a62707fe6