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(2w10) 的数字
  • 数字 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(1ci50000,ci50000)

q ( 1 ≤ q ≤ 300 ) q(1 \\leq q \\leq 300) q(1q300) 次询问,每次询问求解有多少个不同的长度为 n ( 1 ≤ n ≤ 1 0 7 ) n(1 \\leq n \\leq 10^7) n(1n107) 的好字符串。

题解

考虑生成函数,由于求排列计数,因此考虑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+...=exi=0ck1i!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=0w1fk(x)=k=0w1(exi=0ck1i!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=0w1(exi=0ck1i!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=0w1eix(1)w1igw1,w1i(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=0ci1k!xk 的前 i i i 项中,选取了 j j j 项之积的表达式之和。存在转移式
g i , j = g i − 1 , j + g i − 1 , j − 1 ⋅ ∑ k = 0 c i − 1

以上是关于2022牛客多校#4 C. Easy Counting Problem的主要内容,如果未能解决你的问题,请参考以下文章

2022牛客多校#4 C. Easy Counting Problem

2022牛客多校#6 C. Forest

2022牛客多校#6 C. Forest

2022牛客多校#6 C. Forest

2022牛客多校第四场C.Easy Counting Problem(EGF+NTT)

2022牛客多校第四场C.Easy Counting Problem(EGF+NTT)