最巧妙的一步:把问题变成有一个长为
M
=
X
+
Y
+
Z
+
3
M=X+Y+Z+3
M=X+Y+Z+3 的环,环上的点标号为
0
0
0 至
M
−
1
M-1
M−1,第一个人初始在
0
0
0 号点,第二个人初始在
X
+
1
X+1
X+1 号点,第三个人初始在
X
+
Y
+
2
X+Y+2
X+Y+2 号点,从
1
1
1 到
n
n
n 枚举
i
i
i,如果
S
i
S_i
Si 是
A
\text{A}
A,那么第一个人坐标加一模
M
M
M;如果
S
i
S_i
Si 是
B
\text{B}
B,那么第二个人坐标加一模
M
M
M;否则第三个人坐标加一模
M
M
M。那么限制相当于任意时刻三个人位置两两不同。
先假定所有方案是合法的,容斥掉不合法的即可。
如果某种不合法方案最后三个人的位置两两不同,那么找到最早的时刻
t
t
t 使得
t
t
t 时刻有两个人
x
,
y
x,y
x,y 位置重合,可以发现因为最后三个人位置两两不同所以
x
,
y
x,y
x,y 这两个人至少有一个人在
t
t
t 时刻是动了的,而因为两人重合了所以
t
t
t 时刻之后两人是不作区分的,于是把这种不合法方案在
t
t
t 时刻之后
x
x
x 和
y
y
y 的移动交换一下可以得到另一种不合法方案。因为最后输出答案模2,这些不合法方案就两两抵消了。
现在剩下的不合法方案只有最后时刻至少有两个人位置相同的了。减掉第一个人和第二个人最后重合的方案数,再减掉第二个人和第三个人最后重合的方案数,再减掉第一个人和第三个人最后重合的方案数,可以发现这样三个人最后都在一个位置的方案减了3次,我们希望只减1次,不过由于只用输出答案模2所以可以忽略这个问题。下面只计算第一个人和第二个人最后重合的方案数,另外两种情况类似。
令
K
=
X
+
1
K=X+1
K=X+1,发现方案数是
[
x
K
]
(
1
x
+
1
+
x
)
n
m
o
d
(
x
M
−
1
)
[x^K](\frac 1x+1+x)^n\mod (x^M-1)
[xK](x1+1+x)nmod(xM−1),考虑根号分治,当
M
≤
n
M\leq\sqrt n
M≤n 时,由库墨尔定理
(
2
k
i
)
≡
0
(
m
o
d
2
)
(
0
<
i
<
2
k
)
\binom{2^k}i\equiv 0(\mod 2)(0<i<2^k)
(i2k)≡0(mod2)(0<i<2k),那么
(
1
x
2
k
+
1
+
x
2
k
)
(\frac 1{x^{2^k}}+1+x^{2^k})
(x2k1+1+x2k) 的系数模2意义下与
(
1
x
+
1
+
x
)
2
k
(\frac 1x+1+x)^{2^k}
(x1+1+x)2k 相同,把
n
n
n 按二进制拆分,把原式变成
∏
k
(
1
x
2
k
+
1
+
x
2
k
)
\prod_k(\frac 1{x^{2^k}}+1+x^{2^k})
∏k(x2k1+1+x2k),直接模
M
M
M 意义下多项式乘法即可,是
O
(
m
log
n
)
O(m\log n)
O(mlogn)的。
当
M
>
n
M>\sqrt n
M>n 时,先把式子写成
∑
i
[
x
K
+
n
+
i
M
]
(
1
+
x
+
x
2
)
n
\sum_i[x^{K+n+iM}](1+x+x^2)^n
∑i[xK+n+iM](1+x+x2)n,考虑
n
n
n 个多项式相乘,有
A
A
A 个取的是
1
1
1 这一项,有
B
B
B 个取的是
x
x
x 这一项,有
C
C
C 个取的是
x
2
x^2
x2 这一项,那么有
A
+
B
+
C
=
n
,
B
+
2
C
=
K
+
n
+
i
M
A+B+C=n,B+2C=K+n+iM
A+B+C=n,B+2C=K+n+iM,固定
A
,
B
,
C
A,B,C
A,B,C 的值后方案数是
(
n
A
)
(
n
−
A
B
)
\binom nA\binom{n-A}B
(An)(Bn−A),我们要计算这个式子模2的值,可以卢卡斯定理拆开数位dp,对于每个
i
i
i 是
O
(
log
n
)
O(\log n)
O(logn) 的,而满足
0
≤
K
+
n
+
i
M
≤
2
n
0\leq K+n+iM\leq 2n
0≤K+n+iM≤2n 的
i
i
i 只有
O
(
n
m
)
O(\frac nm)
O(mn) 个,故这种做法时间复杂度是
O
(
n
m
log
n
)
O(\frac nm\log n)
O(mnlogn) 的。两种做法拼起来即可。
ARC147F题解
于 2022-09-16 20:34:22 首次发布