2022牛客多校#4 C. Easy Counting Problem
Posted 欣君
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2022牛客多校#4 C. Easy Counting Problem相关的知识,希望对你有一定的参考价值。
C. Easy Counting Problem
题目大意
定义好字符串,满足:
- 包含十进制下小于 w ( 2 ≤ w ≤ 10 ) w(2 \\leq w \\leq 10) w(2≤w≤10) 的数字
- 数字 i i i 至少出现 c i ( 1 ≤ c i ≤ 50000 , ∑ c i ≤ 50000 ) c_i(1 \\leq c_i \\leq 50000,\\sum c_i \\leq 50000) ci(1≤ci≤50000,∑ci≤50000) 次
有 q ( 1 ≤ q ≤ 300 ) q(1 \\leq q \\leq 300) q(1≤q≤300) 次询问,每次询问求解有多少个不同的长度为 n ( 1 ≤ n ≤ 1 0 7 ) n(1 \\leq n \\leq 10^7) n(1≤n≤107) 的好字符串。
题解
考虑生成函数,由于求排列计数,因此考虑EGF。
数字
k
k
k 至少出现
c
k
c_k
ck 次,其对应的EGF为
f
k
(
x
)
=
x
c
k
c
k
!
+
x
c
k
+
1
(
c
k
+
1
)
!
+
x
c
k
+
2
(
c
k
+
2
)
!
+
.
.
.
=
e
x
−
∑
i
=
0
c
k
−
1
x
i
i
!
\\beginaligned f_k(x)&=\\fracx^c_kc_k!+\\fracx^c_k+1(c_k+1)!+\\fracx^c_k+2(c_k+2)!+...\\\\ &=e^x-\\sum_i=0^c_k-1\\fracx^ii! \\endaligned
fk(x)=ck!xck+(ck+1)!xck+1+(ck+2)!xck+2+...=ex−i=0∑ck−1i!xi
所有条件汇总的EGF为
F
(
x
)
=
∏
k
=
0
w
−
1
f
k
(
x
)
=
∏
k
=
0
w
−
1
(
e
x
−
∑
i
=
0
c
k
−
1
x
i
i
!
)
F(x)=\\prod_k=0^w-1f_k(x)=\\prod_k=0^w-1(e^x-\\sum_i=0^c_k-1\\fracx^ii!)
F(x)=k=0∏w−1fk(x)=k=0∏w−1(ex−i=0∑ck−1i!xi)
对于每个询问的
n
n
n ,
F
(
x
)
F(x)
F(x) 的
[
x
n
n
!
]
[\\fracx^nn!]
[n!xn] 的系数即为答案。
a
n
s
n
=
[
x
n
n
!
]
∏
k
=
0
w
−
1
(
e
x
−
∑
i
=
0
c
k
−
1
x
i
i
!
)
ans_n=[\\fracx^nn!]\\prod_k=0^w-1(e^x-\\sum_i=0^c_k-1\\fracx^ii!)
ansn=[n!xn]k=0∏w−1(ex−i=0∑ck−1i!xi)
上式无法直接卷积,考虑单独提出
e
x
e^x
ex
F
(
x
)
=
∑
i
=
0
w
−
1
e
i
x
⋅
(
−
1
)
w
−
1
−
i
⋅
g
w
−
1
,
w
−
1
−
i
(
x
)
F(x)=\\sum_i=0^w-1e^ix\\cdot (-1)^w-1-i \\cdot g_w-1,w-1-i(x)
F(x)=i=0∑w−1eix⋅(−1)w−1−i⋅gw−1,w−1−i(x)
其中
g
i
,
j
g_i,j
gi,j 表示在
∑
k
=
0
c
i
−
1
x
k
k
!
\\\\sum_k=0^c_i-1\\fracx^kk!\\
∑k=0ci−1k!xk 的前
i
i
i 项中,选取了
j
j
j 项之积的表达式之和。存在转移式 以上是关于2022牛客多校#4 C. Easy Counting Problem的主要内容,如果未能解决你的问题,请参考以下文章 2022牛客多校#4 C. Easy Counting Problem
g
i
,
j
=
g
i
−
1
,
j
+
g
i
−
1
,
j
−
1
⋅
∑
k
=
0
c
i
−
1