各类反演杂题题解(待补充
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
)
然后就从后往前套娃求解就可了
[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
)
观察到
∑
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
)
!
答案就是
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
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
的数的个数,莫比乌斯反演一下即可
第一步到第二步就是莫比乌斯反演一下就可以了。已经时个整除分块的形式了,
O
(
n
)
O(\sqrt n)
O(n) 计算答案。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通