22杭电多校11 Find different(环计数问题)
Posted 吃花椒的妙酱
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了22杭电多校11 Find different(环计数问题)相关的知识,希望对你有一定的参考价值。
题意:给定一个环,环大小为n,环上每个数取值范围为[0,m-1],能通过旋转或者模m意义下整体加任意数得到的环视为同构体,求所以不同的方案数。
Solution: 以上是关于22杭电多校11 Find different(环计数问题)的主要内容,如果未能解决你的问题,请参考以下文章 2019杭电多校第三次hdu6609 Find the answer(线段树) 2019杭电多校二 F. Fantastic Magic Cube (FWT)
\\quad
本题有两个同构体条件。先看模意义下加法,可以转化为差分数组。
\\quad
设环上的数为ai,设
b
i
=
a
i
−
a
(
i
−
1
+
m
o
d
)
m
o
d
m
b_i=a_i-a_(i-1+mod)mod\\,m
bi=ai−a(i−1+mod)modm。因为整体是个环,所以有
∑
b
i
=
0
\\sumb_i=0
∑bi=0(模m意义下)。只考虑模意义下加法同构的话,也就是差分数组要不同的方案数为
m
n
−
1
m^n-1
mn−1(前n-1个bi任意取)
\\quad
现在加上旋转同构体考虑,通过上面的分析,我们现在只要关注差分数组bi旋转同构即可。
\\quad
我们用传统的环计数方法来推导(菜鸡博主不会用polyaQAQ)。考虑环的循环节,设
f
(
i
)
f(i)
f(i)表示环上最小循环节为i的方案数(含旋转同构,也就是说旋转同构会算重),
g
(
i
)
g(i)
g(i)表示存在环循环节为i的方案数(含旋转同构)。比如说123123在g(6)中算,f(6)中不算,f(3)算。
\\quad
设循环节长度为d,则有
n
d
\\fracnd
dn个循环节。设一节的bi数组和为
s
(
m
o
d
m
)
s(mod\\,m)
s(modm),有
s
=
∑
i
=
1
d
b
i
s=\\sum_i=1^db_i
s=∑i=1dbi。因为
∑
b
i
=
0
(
m
o
d
m
)
\\sumb_i=0(mod\\,m)
∑bi=0(modm),则有
m
∣
s
∗
n
d
m\\mid s*\\fracnd
m∣s∗dn,其中s的范围为[0,m-1]等价于[1,m](模m意义下)。假如符合上述约束的s有k个,则
g
(
d
)
=
m
d
−
1
∗
k
g(d)=m^d-1*k
g(d)=md−1∗k。
k
=
∑
i
=
1
m
[
m
∣
i
∗
n
d
]
k=\\sum_i=1^m[m\\mid i*\\fracnd]
k=∑i=1m[m∣i∗dn],提出
g
c
d
(
m
,
n
d
)
,设
p
=
m
g
c
d
(
m
,
n
d
)
,
设
q
=
n
d
g
c
d
(
m
,
n
d
)
gcd(m,\\fracnd),设p = \\fracmgcd(m,\\fracnd),设q=\\frac\\fracndgcd(m,\\fracnd)
gcd(m,dn),设p=gcd(m,dn)m,设q=gcd(m,dn)dn,显然pq互质。
k
=
∑
i
=
1
m
[
p
∣
i
q
]
=
m
p
=
g
c
d
(
m
,
n
d
)
k=\\sum_i=1^m[p\\mid iq]=\\fracmp=gcd(m,\\fracnd)
k=∑i=1m[p∣iq]=pm=gcd(m,dn)
\\quad
则
g
(
d
)
=
m
d
−
1
∗
g
c
d
(
m
,
n
d
)
g(d)=m^d-1*gcd(m,\\fracnd)
g(d)=md−1∗gcd(m,dn)。而
g
(
d
)
=
∑
d
′
∣
d
f
(
d
′
)
g(d)=\\sum_d'\\mid df(d')
g(d)=∑d′∣df(d′),由莫比乌斯反演有
f
(
d
)
=
∑
d
′
∣
d
μ
(
d
d
′
)
g
(
d
′
)
f(d)=\\sum_d'\\mid d\\mu(\\fracdd')g(d')
f(d)=∑d′∣dμ(d′d)g(d′)。
\\quad
则
a
n
s
(
n
)
=
∑
d
∣
n
f
(
d
)
d
,去掉旋转同构
=
∑
d
∣
n
1
d
∑
d
′
∣
d
μ
(
d
d
′
)
g
(
d
′
)
=
∑
d
∣
n
1
d
∑
d
′
∣
d
μ
(
d
d
′
)
m
d
′
−
1
∗
g
c
d
(
m
,
n
d
′
)
ans(n)=\\sum_d\\mid n\\fracf(d)d,去掉旋转同构\\\\=\\sum_d\\mid n\\frac1d\\sum_d'\\mid d\\mu(\\fracdd')g(d')\\\\=\\sum_d\\mid n\\frac1d\\sum_d'\\mid d\\mu(\\fracdd')m^d'-1*gcd(m,\\fracnd')
ans(n)=∑d∣ndf(d),去掉旋转同构=∑d∣nd1∑d′∣dμ(d′d)g(d′)=∑d∣nd1∑<