真學習筆記 前夕 單位根反演 廣義容斥

2021-08-22 04:42:18 字數 2879 閱讀 8300

這次是真的學習筆記了……

真正意義上搞明白廣義容斥實在說啥……

真正搞明白了單位根的那個性質……

題目大意:有個大小為n的集合s,求所有選出若干非空且互不相等的子集使得交集大小是k的倍數。要求乙個o(nk)的做法。

先來說說二項式反演這件事情:

p (x

)=∑k

=0xq

(k)(

xk)q

(x)=

∑k=0

xp(k

)(xk

)(−1

)x−k

p(x)=\sum_^x q(k)\binom xk\\q(x)=\sum_^x p(k)\binom xk (-1)^

p(x)=∑

k=0x

​q(k

)(kx

​)q(

x)=∑

k=0x

​p(k

)(kx

​)(−

1)x−

k這個顯然是對的,因為你至少可以把互相帶入……

知道了這件事情我們就可以去做一些廣義容斥,例如,我們假定我們已經知道了p(k)表示大小至少k的答案,然後記q(k)表示大小恰好k的答案,我們想通過p直接算出q,也就是:

q (k

)=∑i

=0np

(i)f

(i

)q(k)=\sum_^np(i)f(i)

q(k)=∑

i=0n

​p(i

)f(i

)也就是給p加乙個係數f。

而左半部分就是下式,考慮乙個大小是i的集合會被p(x)f(x)計算c(x, i)f(x)次:

∑ i=

0nq(

i)∑j

=0i(

ij)f

(j

)\sum_^nq(i)\sum_^i\binom ij f(j)

∑i=0n​

q(i)

∑j=0

i​(j

i​)f

(j)而我們最後希望這個東西是:∑i=

0nq(

i)[i

==k]

\sum_^nq(i)[i==k]

∑i=0n​

q(i)

[i==

k]也就是∑i=

0x(x

i)f(

i)=[

x==k

]\sum_^x\binom xif(i)=[x==k]

∑i=0x​

(ix​

)f(i

)=[x

==k]

我們把右邊看做二項式反演的q,那麼有:

f (x

)=∑i

=0x[

i==k

](−1

)x−i

(xi)

f(x)=\sum_^x[i==k](-1)^\binom xi

f(x)=∑

i=0x

​[i=

=k](

−1)x

−i(i

x​)也就是當x< k時f(x

)=

0f(x)=0

f(x)=0

否則f (x

)=(−

1)x−

k(xk

)f(x)=(-1)^\binom

f(x)=(

−1)x

−k(k

x​)這樣就是常說的一種特殊形式的容斥。

這個題裡面,顯然取p(x

)=(n

x)(2

2n−k

−1

)p(x)=\binom nx\left(2^}-1\right)

p(x)=(

xn​)

(22n

−k−1

)然後這裡的[i=

=k

][i==k]

[i==k]

要變成[k∣

i]

[k|i]

[k∣i

],也就是只對k的倍數那裡統計。

然後就是單位根的性質:

[ k∣

n]=1

k∑i=

0k−1

(wkn

)i

[k|n]=\frac 1k \sum_^(w_k^n)^i

[k∣n]=

k1​∑

i=0k

−1​(

wkn​

)i單位根的乙個應用是直接把wki

w_k^i

wki​

這玩意帶入到多項式裡面,這樣求和之後就只剩下k的倍數的項的係數的和的k倍了。

另乙個就是直接展開,像這個題直接像上乙個例子那樣那[i==k]那裡替換成[k|i]然後替換成上面單位根的式子然後推導一番即可。注意到交換求和順序後(也就是先對不同的單位根求和再加起來)後面那一坨可以用二項式定理縮起來。

**裡面是假定k=4的題。

#include

#include

#include

#include

#define n 10000010

#define lint long long

#define p 998244353

using namespace std;

inline

intmol

(lint x)

int w[6]

,v[6

],f[n]

,fi[n]

,a[n]

;inline

intfast_pow

(int x,

int k,

int ans=1)

intmain()

學習筆記 單位根反演

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...

單位根反演學習筆記

存在式子 n cdot n k sum omega n 我們考慮來證明一下,若 n k 1 那麼顯然 omega n 1 若 n k ne 1 那麼後者就是乙個等比數列,我們運用求和公式 frac 1 0 我們可以利用這個式子提取出乙個多項式的整數倍係數。sum rfloor x f x sum n...

單位根反演

定理 n mid a dfrac1n sum omega n 證明 使用等比數列求和 a 0 mod n 公比不為 1 原式 dfrac1n times dfrac 1 dfrac1n times dfrac 0 a 0 mod n 公比為 1 原式 dfrac1n times n times om...