1. 程式人生 > 其它 >7.6&7.7 Math

7.6&7.7 Math

\[\begin{aligned}\begin{gathered}\ \huge\mathcal{M}\texttt{athematics}\ \quad{\large\texttt{-SGColin}} \end{gathered}\end{aligned} \]

寫在前面

  • 重思維,重視演算法內部的邏輯,不要死記硬背。
  • 多實踐,多做題,自己多推式子,找性質。
  • 儘量不要看題解,自己思考
  • 題目的意義在你開啟題解的那一刻就消失了。

康託展開

變進位制數

每一位上的進製為 \(b_i\),令 \(b_0=1\),則第 \(i\) 位的權重為 \(\prod_{j=0}^i b_j\),令變進位制數序列為 \(\overline{a_na_{n-1}\cdots a_1}\),則該數在 \(10\) 進位制下表示:

\[\sum_{i=1}^{n}\prod_{j=0}^{i}a_ib_j \]

階乘進位制數

  • \(b_i=i\),則權重為 \(i!\)

廣義康託展開

  • 變進位制數下的進制變換,即給出 \((A)_{s1}\),求 \((A)_{s2}\)

一般轉化成 \((A)_{s1}\to(A)_{10}\to(A)_{s2}\)

時間複雜度:\(O(n)\)

康託展開

  • 將任意十進位制自然數轉換為階乘進位制數。

逆康託展開

  • 將任意階乘進位制數轉換為十進位制自然數。

排列與變進位制數

  • 任何一個 \(1,\cdots,n\) 的排列 \(p_1,\cdots,p_n\) 都對應唯一的階乘進位制數。

排列從小到大的排名:

\[\sum_{i=1}^n(rk_i-1)!+1 \]

其中 \(rk_i\) 表示 \(i\) 在以 \(i\) 為起點的字尾中的排名。

數論數學

一些複雜度分析

\[\begin{aligned} \large\texttt{素數分佈:}&\lim_{n\to \infty} \dfrac{\pi(n)\times \ln n}{n}=1\\ \large\texttt{調和級數:}&\sum_{i=1}^{n} \dfrac{1}{i}=O(\log n)\\ \large\texttt{素數調和級數:}&\sum_{p=1|p\in\operatorname{prime}}^{n} \dfrac{1}{p}=O(\log \log n)\\ \end{aligned} \]

求逆元

\(a\) 的逆元:\(a\times a^{-1}\equiv 1\pmod p\)

存在逆元:\(\gcd(a,p)=1\)

  • 費馬小定理 (尤拉定理特殊情況)
\[a\times a^{a-2}\equiv 1\pmod p|p\in\operatorname{prime} \]
  • 擴充套件歐幾里得

考慮 \(ax+kp=1\) 的解。

  • 尤拉定理
\[a\times a^{\varphi(p)-1}\equiv 1\pmod p \]
  • 線性求逆元 1
\[i^{-1}\equiv -\lfloor\dfrac{p}{i}\rfloor\times (p\bmod i)^-1\pmod p \]
  • 線性求逆元 2

\(\prod a_i\) 的逆元,再反向回退。

擴充套件尤拉定理

\[a^b\bmod p= \begin{cases} a^{b\bmod \varphi(p)}&\gcd(a,p)=1\\ a^b&\gcd(a,p)\neq1,b\leq \varphi(p)\\ a^{b\bmod \varphi(p)+\varphi(p)}&\gcd(a,p)\neq1,b\geq \varphi(p)\\ \end{cases} \]

拉格朗日插值

  • 任何一個 \(n\) 次多項式一定能用不同的 \(n+1\) 個點表示出來。

若已知 \(y=f_x\) 過點 \((x_0,y_0),(x_1,y_1),\cdots,(x_n,y_n)\) ,考慮構造一個次數不超過 \(n\) 的多項式:

\[f_x=\sum_{i=0}^{n} y_i\prod_{j\not= i}\dfrac{x-x_j}{x_i-x_j} \]

此時滿足 \(f_{x_k}=y_k|k\in[0,n]\)

中國剩餘定理

構造方案:

\[ans=\sum_{i=1}^n a_i\times\dfrac{M}{a_i}\times(\dfrac{M}{a_i})^{-1}+\operatorname{lcm}(a_i)\\ M=\prod_{i=1}^n a_i \]

擴充套件中國剩餘定理

  • 對於兩個同餘方程,利用擴充套件歐幾里得兩兩合併。

Meet in the middle

  • 雙向搜尋,中間合併。

BSGS 離散對數

求解 \(a^x\equiv b\pmod p\)

\(x=A\lceil\sqrt p\rceil-B\),則有 \(a^{A\lceil\sqrt p\rceil-B}\equiv b\pmod p\),即:\(a^{A\lceil\sqrt p\rceil}\equiv b\times a^B\pmod p\)

我們已知 \(a,b\),所以只需列舉 \(B\),計算出 \(b\times a^B\) 存入 Hash/map 中,再列舉 \(A\),計算出 \(a^{A\lceil\sqrt p\rceil-B}\),在 Hash/map 中查詢是否有相等的一項,從而得到 \(x\) 的解。

時間複雜度:Hash \(O(\sqrt p)\)map \(O(\sqrt p\log p)\)

線性篩

  • 積性函式:\(f_{ab}=f_a\times f_b\)

詳見 SGColin's Blog

數論分塊

  • \(1,\cdots,n\)\(\lfloor\dfrac{n}{i}\rfloor\) 的值進行劃分,時間複雜度:\(O(\sqrt n)\)

區間篩法

  • 給定區間 \([l,r]\),求出區間 \([l,r]\) 內有多少質數 \((l,r\leq 10^{12},r-l+1\leq10^6)\)

我們知道 \(r\) 以內的合數的最小質因數一定不超過 \(\sqrt r\),所以如果有 \(\sqrt r\) 內的素數表的話,就可以利用線性篩在 \(O(r-l+1)\) 的時間篩出質數。

構造

  • 考驗思維。

構造題的好兄弟 (1) 尤拉路

從其中任意一點出發,不重複的走完所有邊。

如果最後回到起點,則稱為歐拉回路;如果沒有回到起點,則稱為尤拉通路。

  • 無向圖中有且僅有兩個點為奇點,存在以這兩個點為起點和終點的尤拉通路。
  • 無向圖中所有點均為偶點,存在歐拉回路。
  • 有向圖中有且僅有一個出度比入度大 \(1\) 的點和一個入度比出度大 \(1\) 的點,其他點出度入度均相等,則存在以前者為起點,後者為終點的尤拉通路。
  • 有向圖中所有點的出度入度均相等,存在歐拉回路。

構造題的好兄弟 (2) 哈密頓路

從其中任意一點出發,不重複的經過所有點。

如果最後回到起點,則稱為哈密頓迴路;如果沒有回到起點,則稱為哈密頓通路。

  • Dirac 定理:\(n\) 個頂點的無向圖中,若所有頂點的度數都 \(\geq \lceil\dfrac{n}{2}\rceil\),則一定存在哈密頓迴路。

  • 競賽圖:無向完全圖給每條邊標方向所生成的有向圖。

  • \(n(n\geq 2)\) 階競賽圖一定存在哈密頓通路。

組合數學

四大基本原理

  • 不相交路徑計數

\(n\) 個點的 DAG,問 \(a\to b\)\(c\to d\) 的不相交路徑條數。

首先問題轉化為總路徑減相交路徑。

拓撲排序,處理出 \(f_{i,j}\) 表示 \(i\)\(j\) 的路徑條數,列舉第一個交點 \(p\),處理出 \(a,c\) 分別到 \(p\) 不相交的路徑條數,再乘以 \(p\)\(b,d\) 可以相交的路徑條數。

排列與組合

  • 排列:\(A_n^m=\dfrac{n!}{(n-m)!}\)
  • 圓排列:\(A_n^{m'}=\dfrac{n!}{m(n-m)!}=\dfrac{A_n^m}{m}\)
  • 組合:\(C_n^m={n\choose m}=\dfrac{n!}{m!(n-m)!}=\dfrac{A_n^m}{m!}\)

全錯位排列

  • \(\forall i\in[1,n]\),滿足第 \(i\) 個位置上的數不是 \(i\) 的排列數。
\[\begin{cases} D_1=0\\ D_2=1\\ D_n=(n-1)(D_{n-1}+D_{n-2}) \end{cases} \]

Fake 二項式定理

\[\sum_{i=0}^n (-1)^i{n\choose i}=0 \]

數列

卡特蘭數

  • 從點 \((0,0)\) 到點 \((n,n)\),每次只能向右或上移動一個單位,求路線處於 \(y=x\) 之下的路徑數。
\[H_n={2n\choose n}-{2n\choose n-1}=\dfrac{{2n\choose n}}{n+1}\\ \]

變式:從 \((0,0)\)\((n,m)\),條件同上。

\[\texttt{Ans}={n+m\choose m}-{n+m\choose m-1} \]
  • \(n\) 個點的二叉樹劃分。

  • \(n+3\) 個點多邊形的三角剖分。

\[H_n=\sum_{i=0}^n H_iH_{n-i-1} \]

P1641 生成字串

斐波那契數列

\[\sum_{i=1}^n F_i=F_{n+2}-1\\ \sum_{i=1}^n {F_i}^2=F_nF_{n+1}\\ \sum_{k=1}^n F_{2k-1}=F_{2n}\\ \sum_{k=1}^n F_{2k}=F_{2n+1}-1\\ F_n=F_mF_{n-m+1}+F_{m-1}F_{n-m}\mid m\leq n\\ F_{n+1}F_{n-1}={F_n}^2+(-1)^n\\ \gcd(F_i,F_j)=F_{\gcd(i,j)}\\ n\mid m \Longleftrightarrow F_n\mid F_m\\ \]

第一類斯特林數

  • \(n\) 個不同元素,構成 \(m\) 個圓排列的方案數。
\[S_{1_{n,m}}=S_{1_{n-1,m-1}}+(n-1)S_{1_{n-1,m}} \]

第二類斯特林數

  • \(n\) 個不同元素,劃分成 \(m\) 個非空集合的方案數。
\[S_{2_{n,m}}=S_{2_{n-1,m-1}}+m\times S_{2_{n-1,m}} \]

概率期望

古典概型

  • 隨機試驗包含的單位時間是有限的,並且每個單位時間發生的可能性均相等。

\(P_i\) 表示事件 \(i\) 的概率。

\[\sum_{i=1}^n P_i=1\\ \int P_i=1 \]

幾何概型

  • 隨機試驗的結果是無限的,並且每個基本結果發生的概率相同。

加法原理 乘法原理

  • 對於獨立事件 \(A\)\(B\)\(P_{A\bigcap B}=P_A\times P_B\)
  • 對於並列事件 \(A\)\(B\)\(P_{A\bigcup B}=P_A+P_B\)

期望的線性性

\[E_x=\sum_{i=1}^n P_i x_i\\ E_{ax+b}=E_{ax}+E_b=aE_{x}+E_b\\ \]

條件概率

  • 當事件 \(B\) 已經發生時,事件 \(A\) 發生的概率:
\[P_{A\mid B}=\dfrac{P_{A\bigcap B}}{P_B} \] contact me on QQ (601585974 布魯)