各类反演杂题题解(待补充
yxy之前有不喜欢打逗号的习惯,giao哪儿养的怪习惯啊233(轻喷
CF997C Sky Full of Stars
f ( i , j ) f(i,j) f(i,j) 表示有 i i i 行 j j j 列颜色相同 剩下的随便涂 的方案(有重复方案
g ( i , j ) g(i,j) g(i,j) 表示刚好有 i i i 行 j j j 列颜色相同的方案数 (无重复
f ( i , j ) = ∑ x = i n ∑ y = j n ( x i ) ( y j ) g ( x , y ) f(i,j)=\sum_{x=i}^n \sum_{y=j}^n {x\choose i} {y\choose j}g(x,y) f(i,j)=x=i∑ny=j∑n(ix)(jy)g(x,y)
二项式反演
g ( i , j ) = ∑ x = i n ∑ y = j n ( − 1 ) x + y − i − j ( x i ) ( y j ) f ( x , y ) g(i,j)=\sum_{x=i}^n \sum_{y=j}^n {(-1)}^{x+y-i-j}{x\choose i} {y\choose j}f(x,y) g(i,j)=x=i∑ny=j∑n(−1)x+y−i−j(ix)(jy)f(x,y)
那么答案就是
a n s = 3 n 2 − g ( 0 , 0 ) ans=3^{n^2}-g(0,0) ans=3n2−g(0,0)
考虑求 f ( i , j ) f(i,j) f(i,j)
当 i = 0 , j = 0 i=0,j=0 i=0,j=0 时 f ( i , j ) = 3 n 2 f(i,j)=3^{n^2} f(i,j)=3n2
当 i j = 0 ij=0 ij=0 时 f ( i , j ) = ( n i ) ( n j ) 3 n ( n − i − j ) + i + j f(i,j)={n \choose i}{n \choose j}3^{n(n-i-j)+i+j} f(i,j)=(in)(jn)3n(n−i−j)+i+j
当 i j ≠ 0 ij\not=0 ij=0 时 f ( i , j ) = ( n i ) ( n j ) 3 ( n − i ) ( n − j ) + 1 f(i,j)={n \choose i}{n \choose j}3^{(n-i)(n-j)+1} f(i,j)=(in)(jn)3(n−i)(n−j)+1
直接求
g
(
0
,
0
)
g(0,0)
g(0,0) 的话会超时 所以推柿子简化一下
g
(
0
,
0
)
=
∑
i
=
0
n
∑
j
=
0
n
(
−
1
)
i
+
j
f
(
i
,
j
)
=
∑
i
=
1
n
∑
j
=
1
n
(
−
1
)
i
+
j
f
(
i
,
j
)
+
2
×
∑
i
=
1
n
(
−
1
)
i
f
(
i
,
0
)
+
f
(
0
,
0
)
∑
i
=
1
n
∑
j
=
1
n
(
−
1
)
i
+
j
f
(
i
,
j
)
=
∑
i
=
1
n
∑
j
=
1
n
(
−
1
)
i
+
j
(
n
i
)
(
n
j
)
3
(
n
−
i
)
(
n
−
j
)
+
1
=
3
n
2
+
1
∑
i
=
1
n
(
−
1
)
i
(
n
i
)
3
−
i
n
∑
j
=
1
n
(
−
1
)
j
(
n
j
)
3
−
j
n
+
i
j
=
3
n
2
+
1
∑
i
=
1
n
(
−
1
)
i
(
n
i
)
3
−
i
n
∑
j
=
1
n
(
n
j
)
(
−
3
i
−
n
)
j
=
3
n
2
+
1
∑
i
=
1
n
(
−
1
)
i
(
n
i
)
3
−
i
n
(
(
1
−
3
i
−
n
)
n
−
1
)
\begin{aligned} g(0,0)&=\sum_{i=0}^n \sum_{j=0}^n {(-1)}^{i+j}f(i,j) \\ &=\sum_{i=1}^n \sum_{j=1}^n {(-1)}^{i+j}f(i,j)+2\times\sum_{i=1}^{n}(-1)^if(i,0)+f(0,0) \\ \sum_{i=1}^n \sum_{j=1}^n{(-1)}^{i+j}f(i,j)&=\sum_{i=1}^n \sum_{j=1}^n{(-1)^{i+j}}{n \choose i}{n\choose j}3^{(n-i)(n-j)+1} \\ &=3^{n^2+1}\sum_{i=1}^n {(-1)^i}{n \choose i}3^{-in} \sum_{j=1}^n{(-1)^{j}}{n\choose j}3^{-jn+ij} \\ &=3^{n^2+1}\sum_{i=1}^n {(-1)^i}{n \choose i}3^{-in} \sum_{j=1}^n{n\choose j}{(-3^{i-n})}^{j} \\ &=3^{n^2+1}\sum_{i=1}^n(-1)^i{n \choose i}3^{-in}({(1-3^{i-n})^n}-1) \end{aligned}
g(0,0)i=1∑nj=1∑n(−1)i+jf(i,j)=i=0∑nj=0∑n(−1)i+jf(i,j)=i=1∑nj=1∑n(−1)i+jf(i,j)+2×i=1∑n(−1)if(i,0)+f(0,0)=i=1∑nj=1∑n(−1)i+j(in)(jn)3(n−i)(n−j)+1=3n2+1i=1∑n(−1)i(in)3−inj=1∑n(−1)j(jn)3−jn+ij=3n2+1i=1∑n(−1)i(in)3−inj=1∑n(jn)(−3i−n)j=3n2+1i=1∑n(−1)i(in)3−in((1−3i−n)n−1)
然后就从后往前套娃求解就可了
[AGC035F] Two Histograms
直接求方案数不好求 所以求重复的方案数(方案数指操作序列的方案数
当一个方案存在 k i = j , l j = i − 1 k_i=j,l_j=i-1 ki=j,lj=i−1 就是重复。接下来称这种情况为不合法
按照套路设 f ( i ) f(i) f(i) 为有 i i i 个不合法 剩下的随便取的方案数
设 g ( i ) g(i) g(i) 为刚好有 i i i 个不合法的方案数 则
f ( i ) = ∑ j = i n ( j i ) g ( j ) f(i)=\sum_{j=i}^{n}{j\choose i}g(j) f(i)=j=i∑n(ij)g(j)
二项式反演
g ( i ) = ∑ j = i n ( − 1 ) j − i ( j i ) f ( j ) g(i)=\sum_{j=i}^{n}{(-1)}^{j-i}{j\choose i}f(j) g(i)=j=i∑n(−1)j−i(ij)f(j)
直接按照定义求 f ( i ) f(i) f(i)
f ( i ) = ( n i ) ( m i ) i ! ( n + 1 ) m − i ( m + 1 ) n − i f(i)={n \choose i}{m\choose i}i!(n+1)^{m-i}(m+1)^{n-i} f(i)=(in)(im)i!(n+1)m−i(m+1)n−i
所以答案就是
g ( 0 ) = ∑ i = 0 n ( − 1 ) i ( n i ) ( m i ) i ! ( n + 1 ) m − i ( m + 1 ) n − i g(0)=\sum_{i=0}^{n}{(-1)}^i{n \choose i}{m\choose i}i!(n+1)^{m-i}(m+1)^{n-i} g(0)=i=0∑n(−1)i(in)(im)i!(n+1)m−i(m+1)n−i
(其实容斥好理解些
LOJ #528. 「LibreOJ β Round #4」求和
令
n
u
m
=
m
i
n
(
n
,
m
)
num=min(n,m)
num=min(n,m)
a
n
s
=
∑
i
=
1
n
∑
j
=
1
m
μ
2
(
g
c
d
(
i
,
j
)
)
=
∑
t
=
1
n
u
m
μ
2
(
t
)
∑
i
=
1
i
t
≤
n
∑
j
=
1
i
j
≤
m
(
g
c
d
(
i
,
j
)
=
=
1
)
=
∑
t
=
1
n
u
m
μ
2
(
t
)
∑
i
=
1
i
t
≤
n
∑
j
=
1
i
j
≤
m
∑
d
∣
i
d
∣
j
μ
(
d
)
=
∑
t
=
1
n
u
m
μ
2
(
t
)
∑
d
=
1
d
t
≤
n
μ
(
d
)
⌊
n
d
t
⌋
⌊
m
d
t
⌋
=
∑
t
=
1
n
u
m
∑
d
=
1
d
t
≤
n
u
m
μ
2
(
t
)
μ
(
d
)
⌊
n
d
t
⌋
⌊
m
d
t
⌋
=
∑
d
t
=
1
d
t
≤
n
u
m
⌊
n
d
t
⌋
⌊
m
d
t
⌋
∑
t
∣
d
t
μ
2
(
t
)
μ
(
d
)
\begin{aligned} ans&=\sum_{i=1}^{n}\sum_{j=1}^{m}\mu ^2(gcd(i,j)) \\ &=\sum_{t=1}^{num}\mu ^2(t)\sum_{i=1}^{it\le n}\sum_{j=1}^{ij\le m}(gcd(i,j)==1) \\ &=\sum_{t=1}^{num}\mu ^2(t)\sum_{i=1}^{it\le n}\sum_{j=1}^{ij\le m}\sum_{d|i\ d|j}\mu (d) \\ &=\sum_{t=1}^{num}\mu ^2(t)\sum_{d=1}^{dt\le n}\mu (d){\lfloor\frac{n}{dt}\rfloor}{\lfloor\frac{m}{dt}\rfloor} \\ &=\sum_{t=1}^{num}\sum_{d=1}^{dt\le num}\mu ^2(t)\mu (d){\lfloor\frac{n}{dt}\rfloor}{\lfloor\frac{m}{dt}\rfloor} \\ &=\sum_{dt=1}^{dt\le num}{\lfloor\frac{n}{dt}\rfloor}{\lfloor\frac{m}{dt}\rfloor} \sum_{t|dt}^{}\mu ^2(t)\mu (d) \end{aligned}
ans=i=1∑nj=1∑mμ2(gcd(i,j))=t=1∑numμ2(t)i=1∑it≤nj=1∑ij≤m(gcd(i,j)==1)=t=1∑numμ2(t)i=1∑it≤nj=1∑ij≤md∣i d∣j∑μ(d)=t=1∑numμ2(t)d=1∑dt≤nμ(d)⌊dtn⌋⌊dtm⌋=t=1∑numd=1∑dt≤numμ2(t)μ(d)⌊dtn⌋⌊dtm⌋=dt=1∑dt≤num⌊dtn⌋⌊dtm⌋t∣dt∑μ2(t)μ(d)
观察到
∑
t
∣
d
t
u
2
(
t
)
u
(
d
)
\sum_{t|dt}^{}u^2(t)u(d)
∑t∣dtu2(t)u(d) 是两个积性函数卷起来的形式 所以接下来考虑质数次方处的值 我们发现只要在
p
2
p^2
p2 处有值 且值为
μ
(
p
)
\mu(p)
μ(p)
所以 ∑ t ∣ d t u 2 ( t ) u ( d ) = ( d t = = x ) μ x \sum_{t|dt}^{}u^2(t)u(d)=(\sqrt {dt}==x)\mu_x ∑t∣dtu2(t)u(d)=(dt==x)μx 预处理根号部分的就麻油啦
LOJ #6244. 七选五
设
f
(
i
)
f(i)
f(i) 为有
i
i
i 个空选对 剩下的随便选的方案数,
g
(
i
)
g(i)
g(i) 为刚好有
i
i
i 个空选对的方案数 那么
f
(
i
)
=
(
k
i
)
(
n
−
i
k
−
i
)
(
k
−
i
)
!
=
∑
j
=
i
k
(
j
i
)
g
(
i
)
二
项
式
反
演
一
下
g
(
i
)
=
∑
j
=
1
k
(
−
1
)
j
−
i
(
j
i
)
f
(
j
)
=
∑
j
=
1
k
(
−
1
)
j
−
i
(
j
i
)
(
k
j
)
(
n
−
j
k
−
j
)
(
k
−
j
)
!
\begin{aligned} f(i)&={k\choose i}{n-i\choose k-i}(k-i)! \\ &=\sum_{j=i}^{k}{j\choose i}g(i) \\ 二项式反演一下 \\ g(i)&=\sum_{j=1}^k{(-1)}^{j-i}{j\choose i}f(j) \\ &=\sum_{j=1}^k{(-1)}^{j-i}{j\choose i}{k\choose j}{n-j\choose k-j}(k-j)! \end{aligned}
f(i)二项式反演一下g(i)=(ik)(k−in−i)(k−i)!=j=i∑k(ij)g(i)=j=1∑k(−1)j−i(ij)f(j)=j=1∑k(−1)j−i(ij)(jk)(k−jn−j)(k−j)!
答案就是
g
(
x
)
g(x)
g(x)
[ARC101C] Ribbons on Tree
设 f ( i ) f(i) f(i) 为强制 i i i 条边不被染色 剩下的点在联通块内随便配对的方案数。
那么
f ( i ) = ∑ j = i n ( j i ) g ( j ) f(i)=\sum_{j=i}^n{j\choose i}g(j) f(i)=j=i∑n(ij)g(j)
所以
g ( i ) = ∑ j = i n ( − 1 ) j − i ( j i ) f ( j ) g(i)=\sum_{j=i}^n{(-1)}^{j-i}{j\choose i}f(j) g(i)=j=i∑n(−1)j−i(ij)f(j)
g ( 0 ) = ∑ i = 0 n ( − 1 ) i f ( i ) g(0)=\sum_{i=0}^n{(-1)}^if(i) g(0)=i=0∑n(−1)if(i)
设 d p ( x , y ) dp(x,y) dp(x,y) 表示在 x x x 子树内, x x x 所在的联通块大小是 y y y 的所有方案的容斥系数和(不算 x x x 所在块的贡献)
那么就有转移。
d p ( x , y + z ) ← d p ( x , y ) × d p ( s o n , z ) dp(x,y+z)\ \ \leftarrow\ \ dp(x,y)\times dp(son,z) dp(x,y+z) ← dp(x,y)×dp(son,z)
d p ( x , y ) ← − ( z − 1 ) ! ! d p ( x , y ) × d p ( s o n , z ) dp(x,y)\ \ \leftarrow\ \ -(z-1)!!dp(x,y)\times dp(son,z) dp(x,y) ← −(z−1)!!dp(x,y)×dp(son,z)
枚举 y y y 和 z z z 即可,因为每对点只会在他们的 l c a lca lca 处算一次 所以最后时间复杂度为 O ( n 2 ) O(n^2) O(n2) 。
CF961G Partitions
每个权值的贡献的系数是一样的 所以我们就把题目转化为求这个系数 则
a
n
s
s
u
m
=
∑
i
=
1
n
i
(
n
−
1
i
−
1
)
S
(
n
−
i
,
k
−
1
)
=
∑
i
=
1
n
i
(
n
−
1
i
−
1
)
∑
j
=
0
k
−
1
(
−
1
)
k
−
1
−
j
(
k
−
1
−
j
)
!
j
n
−
i
j
!
=
∑
j
=
0
k
−
1
∑
i
=
1
n
(
n
−
1
i
−
1
)
i
(
−
1
)
k
−
1
−
j
(
k
−
1
−
j
)
!
j
n
−
i
j
!
=
∑
j
=
0
k
−
1
(
−
1
)
k
−
1
−
j
(
k
−
1
−
j
)
!
j
!
∑
i
=
1
n
i
(
n
−
1
i
−
1
)
j
n
−
i
∑
i
=
1
n
i
(
n
−
1
i
−
1
)
j
n
−
i
=
∑
i
=
1
n
(
n
−
1
i
−
1
)
j
n
−
i
+
∑
i
=
1
n
(
i
−
1
)
(
n
−
1
i
−
1
)
j
n
−
i
=
(
j
+
1
)
n
−
1
+
(
n
−
1
)
∑
i
=
1
n
(
n
−
2
i
−
2
)
j
n
−
i
=
(
j
+
1
)
n
−
1
+
(
n
−
1
)
(
j
+
1
)
n
−
2
=
(
n
+
j
)
(
j
+
1
)
n
−
2
a
n
s
=
s
u
m
∑
j
=
0
k
−
1
(
−
1
)
k
−
1
−
j
(
k
−
1
−
j
)
!
j
!
(
n
+
j
)
(
j
+
1
)
n
−
2
\begin{aligned} \frac{ans}{sum}&=\sum_{i=1}^{n}i{n-1\choose i-1}S(n-i,k-1) \\ &=\sum_{i=1}^{n}i{n-1\choose i-1} \sum_{j=0}^{k-1}\frac{{(-1)}^{k-1-j}}{(k-1-j)!} \frac{j^{n-i}}{j!} \\ &=\sum_{j=0}^{k-1}\sum_{i=1}^{n} {n-1\choose i-1} i\frac{{(-1)}^{k-1-j}}{(k-1-j)!} \frac{j^{n-i}}{j!} \\ &=\sum_{j=0}^{k-1} \frac{{(-1)}^{k-1-j}}{(k-1-j)!j!} \sum_{i=1}^{n} i{n-1\choose i-1}{j}^{n-i} \\ \\ \sum_{i=1}^{n} i{n-1\choose i-1}{j}^{n-i}&= \sum_{i=1}^{n}{n-1\choose i-1}{j}^{n-i}+\sum_{i=1}^{n}(i-1){n-1\choose i-1} {j}^{n-i} \\ &={(j+1)}^{n-1}+(n-1)\sum_{i=1}^{n}{n-2\choose i-2}{j}^{n-i} \\ &={(j+1)}^{n-1}+(n-1){(j+1)}^{n-2} \\ &=(n+j){(j+1)}^{n-2} \\ \\ ans&=sum\sum_{j=0}^{k-1} \frac{{(-1)}^{k-1-j}}{(k-1-j)!j!}(n+j){(j+1)}^{n-2} \end{aligned}
sumansi=1∑ni(i−1n−1)jn−ians=i=1∑ni(i−1n−1)S(n−i,k−1)=i=1∑ni(i−1n−1)j=0∑k−1(k−1−j)!(−1)k−1−jj!jn−i=j=0∑k−1i=1∑n(i−1n−1)i(k−1−j)!(−1)k−1−jj!jn−i=j=0∑k−1(k−1−j)!j!(−1)k−1−ji=1∑ni(i−1n−1)jn−i=i=1∑n(i−1n−1)jn−i+i=1∑n(i−1)(i−1n−1)jn−i=(j+1)n−1+(n−1)i=1∑n(i−2n−2)jn−i=(j+1)n−1+(n−1)(j+1)n−2=(n+j)(j+1)n−2=sumj=0∑k−1(k−1−j)!j!(−1)k−1−j(n+j)(j+1)n−2
LOJ #6181. 某个套路求和题
f ( n ) f(n) f(n) 在质数处为 − 1 -1 −1 ,有平方因子时为 0 0 0 ,其余为 1 1 1 。
考虑算出无平方因子的个数,再减去质数的个数。
算质数的个数就是 M i n 25 Min25 Min25 筛计算。时间 O ( n 0.75 log n ) O(\frac{n^{0.75}}{\log n}) O(lognn0.75) 。
无平方因子的个数也就是算
∑
μ
2
\sum \mu^2
∑μ2 ,记
p
(
x
)
=
max
d
2
∣
x
{
d
}
p(x)=\max_{d^2|x}\{d\}
p(x)=maxd2∣x{d}
∑
i
=
1
n
μ
2
(
i
)
=
∑
i
=
1
n
[
p
(
i
)
=
1
]
=
∑
d
=
1
n
μ
(
d
)
⌊
n
/
d
2
⌋
P
S
:
H
x
表示
p
是
x
的倍数的数的个数,
h
x
表示
p
是
x
的数的个数,莫比乌斯反演一下即可
\begin{aligned} &\sum_{i=1}^n \mu^2(i) \\ =&\sum_{i=1}^{n}[p(i)=1] \\ =&\sum_{d=1}^{n}\mu(d)\lfloor n/d^2\rfloor\\ & PS: H_x\text{ 表示 }p \text{ 是 }x\text{ 的倍数的数的个数, }\\ &h_x \text{ 表示 }p \text{ 是 }x\text{ 的数的个数,莫比乌斯反演一下即可 } \end{aligned}
==i=1∑nμ2(i)i=1∑n[p(i)=1]d=1∑nμ(d)⌊n/d2⌋PS:Hx 表示 p 是 x 的倍数的数的个数, hx 表示 p 是 x 的数的个数,莫比乌斯反演一下即可
第一步到第二步就是莫比乌斯反演一下就可以了。已经时个整除分块的形式了,
O
(
n
)
O(\sqrt n)
O(n) 计算答案。

浙公网安备 33010602011771号