反演 學習筆記

2022-02-01 18:53:42 字數 3918 閱讀 2522

小聲bb:本來看skyh推的部落格,是來學容斥的,莫名其妙被強塞了反演

好多童鞋還不知道啥是反演,反正聽起來挺牛逼的,誰會誰被膜。

比如說有兩個未知量 \(x,y\),我們用 \(x\) 表達出來了 \(y\),比如乙個一次函式:

\[y=kx+b

\]那麼我們用 \(y\) 表示 \(x\) 就是:

\[x=\frac

\]\(emmmm\),這差不多就是個反演。

然後我們就搞高階一點:

假設有兩個函式 \(f\) 和 \(g\) 滿足:

\[f[n] = \sum_a_\times g[k]

\]已知 \(f\) 求 \(g\) 的過程就叫做「反演」。

有 \(n\) 個小盆友,每個人有乙個編號 \(1,2...,n\) 。

將這 \(n\) 個小盆友排成一列,編號為 \(i\) 的小盆友不能在第 \(i\) 個位置。

求出所能排隊的方案數,\(n\leq 10^5\) 。

我們拿出高一老師(??)常拿的韋恩影象:

定義:\(a\) 集合:編號為 \(1\) 的小盆友站到 \(1\) 的方案數。

\(b\) 集合:編號為 \(2\) 的小盆友站到 \(2\) 的方案數。

\(c\) 集合:編號為 \(3\) 的小盆友站到 \(3\) 的方案數。

我們要求的就是 \(n! - |a\cup b\cup c|\),用簡單的容斥可得:

\(ans=n! - (|a|+|b|+|c|-|a\cap b|-|b\cap c|-|a\cap c|+ |a\cap b\cap c|)\)

我們可以大膽猜想:

\[ans = \sum_^(-1)^k\times \binom\times (n - k)!\;(假設 0! = 1)

\]\(\binom\times (n - k)!\) 表示強硬的將 \(k\) 個人放到自己應該放的位置(\(i\) 放到第 \(i\) 個位置),剩下 \(n-k\) 個人隨便放的方案數。

比如說你加上了乙個 \(k=2\) 的方案數,強硬地將 \(2\) 個人,後面我們統計 \(k=3\) 時,我們會發現:在前面 \(k=2\) 時,可能有某個小盆友被放到了自己應該放的位置,所以要

減去這些被多餘統計的方案,加法同理。

定義 \(f[n]\) 表示 \(n\) 個人隨便站的方案數。

定義 \(g[n]\) 表示 \(n\) 個人都不站在自己應該在的位置的方案數。

這樣我們直接列舉有多少個人站錯位置,便可求出 \(f[n]\)。

\[f[n]=\sum_^\times \binom\times g[k]

\]但是我們會發現,我們可以直接用 \(f[n] = n!\) 求出 \(f[n]\),而且我們還不會求出 \(g[n]\),難受~~~

我們會發現之前解決那個例題的公式中有乙個這個東東:

\[\sum_^(-1)^k\times \binom

\]易得:這個東東只有 \(n=0\) 時才為 \(1\),否則即為 \(0\) 。

所以上面那個東東就可以化為:

\[\sum_^(-1)^k\times \binom=[n=0]

\]之前我們新定義裡:

用 \(g[n]\) 表示出了 \(f[n]\),然而我們並不知道 \(g[n]\),反而知道 \(f[n]\),我們就需要一些騷操作(繁衍呸,反演),來求出 \(g[n]\) 。

說一句廢話:

\[g[n] = \sum_^[n=m]\times \binom\times g[m]

\]改一下這個廢話:

\[g[n] = \sum_^[n-m=0]\times \binom\times g[m]

\]哦!!!中間那個條件,我們是不是可以用一下那個小鑰匙?

\[g[n] = \sum_^ \sum_^(-1)^k\times \binom\times \binom\times g[m]

\]看一看中間那兩個噁心的組合數:

可以考慮為從 \(n\) 個物品裡,先選 \(m\) 個,再從 \(n-m\) 個裡選 \(k\) 個的方案數。

可以變為為從 \(n\) 個物品裡,先選 \(k\) 個,再從 \(n-k\) 個裡選 \(m\) 個的方案數,組合數可以變為: \(\binom\times \binom\) 。

原式變為:

\[g[n] = \sum_^ \sum_^(-1)^k\times \binom\times \binom\times g[m]

\]交換一下:

\[g[n] = \sum_^ \sum_^(-1)^k\times \binom\times g[m] \times \binom

\]然後將 \(m\) 和 \(k\) 交換一下:

\[g[n] = \sum_^ \sum_^(-1)^k\times \binom\times g[m] \times \binom

\]再次交換:

\[g[n] = \sum_^ (-1)^k\times \binom \sum_^ \binom\times g[m]

\]誒!!後面那個東東就是 \(f[n - k]\),可,我們成功了!!!

\[g[n] = \sum_^ (-1)^k\times \binom \times f[n-k]

\]\(emmmm\),好醜,寫好看一點:

\[g[n] = \sum_^ (-1)^\times \binom \times f[k]

\]\[f[n]=\sum_^\times \binom\times g[k]

\]\[g[n] = \sum_^ (-1)^\times \binom \times f[k]

\]這個好像就是二項式反演

可能與 \(a\) 層的巨佬們學的有點不同,有錯誤,請見諒我這個蒟蒻。

小盆友學英語,他拿到 \(26\) 個小寫字母,他拼出若干個長度為 \(n\) 的字串,求出有多少個字串的迴圈節恰好為 \(n\),\(n\leq 10^9\) 。

連小盆友都知道迴圈節是啥,不用我說吧....(最短的乙個子串複製若干遍後拼起來跟原串相等的字串)。

定義 \(f[n]\) 表示長度為 \(n\) 的字串的個數,顯然是 \(26^n\) 。

定義 \(g[n]\) 表示長度為 \(n\) 且迴圈節長度為 \(n\) 的字串的個數。

可以得出:

\[f[n] = \sum_g[d]

\]上次我們用了乙個條件表示式,開啟了反演的關鍵,這個我們同樣搞乙個:

定義乙個 \(\mu[n]\) 滿足:(莫某某某搞的)

\[\sum_\mu[d] = [n=1]

\]其實這個就是莫比烏斯函式,至於性質,可以看一眼龍蝶的。

同樣,我們說一句廢話:

\[g[n] = \sum_[n=m]\times g[m]

\]將條件表示式變一下:

\[g[n] = \sum_[\frac=1]\times g[m]

\]好,用我們的小鑰匙:

\[g[n] = \sum_\sum_}\times \mu[d] \times g[m]

\]上次我們將 \(m\) 和 \(k\) 進行了交換,這次怎麼處理呢?

我們會發現 \(n\) 能將 \(m\) 整除,\(\frac\) 能將 \(d\) 整除,所以我們可以得出 \(n\) 既能將 \(m\) 整除,又能將 \(d\) 整除,這樣我們就可以將 \(m\) 和 \(k\) 交換了。

\[g[n] = \sum_\sum_}\times \mu[d] \times g[m]

\]交換一下:

\[g[n] = \sum_ \times \mu[d]\sum_} \times g[m]

\]不錯,後面那個東東又可以化為我們的 \(f\),可

\[g[n] = \sum_ \times \mu[d]\times f[\frac]

\]\[f[n] = \sum_g[d]

\]\[g[n] = \sum_ \times \mu[d]\times f[\frac]

\]這個好像就是莫比烏斯反演

圓的反演學習筆記

反演是平面上點到點的乙個對映,除反演中心外每個點都有唯一的反演點與之對應 通過畫圖可以知道一些性質 反演點在圓上,圓會反演成一條直線 反演點不在圓上,圓會反演成乙個圓,與原來的圓位似 反演點在直線上,直線會反演成它本身 反演點不在直線上,直線會反演成乙個圓 反演過後的相切關係不會改變 hdu4773...

圓的反演學習筆記

當初集訓的時候聽老師瞎扯性質,並不知道如何證明,現在也不知道,乾脆將性質寫下來,以後填坑算了。1.定義 假設有一圓c,圓心為o,半徑為r,則一點p相對與o的反演點p 滿足op op r2 2.性質 1 圓內的點反演後在圓外,圓上的點不變,圓外的點反演後在圓內。2 經過圓心的直線反演後還是一樣的直線。...

學習筆記 單位根反演

n k frac sum omega 證明 首先根據單位根的性質 omega 1 所以當 n k 時每一項都等於 1 有 frac sum omega 1 當 n k 不成立時,omega k neq 1 等比數列求和得 frac sum omega frac times frac k 又因為 om...