[题解] LuoguP5401 [CTS2019]珍珠

Posted wxq1229

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[题解] LuoguP5401 [CTS2019]珍珠相关的知识,希望对你有一定的参考价值。

https://www.luogu.com.cn/problem/P5401

对于一个合法的方案,令(c_i)表示颜色(i)出现的次数则有

(sumlimits_{i=1}^D lfloor c_i / 2 floor ge m)

(sumlimits_{i=1}^{D} (c_i - c_i mod 2) / 2 ge m)

最后可以得到

(n - sumlimits_{i=1}^D c_i mod 2 ge 2m)

(sumlimits_{i=1}^D c_i mod 2 le n - 2m)

枚举左边的值,累加答案。

(f_k)表示(sumlimits_{i=1}^D c_i mod 2 = k)的方案数

恰好等于(k),一个套路的想法:设(g_k)表示钦定(k)(c mod 2 = 1)后,其余随意的方案数

枚举最后有(i)(c)为奇数,由于有之前的钦定,这些方案会被重复计数(inom{i}{k})

所以(g_k = sumlimits_{i=k}^{D} inom{i}{k} f_i)

根据二项式反演

[egin{aligned} f_k &= sumlimits_{i=k}^D inom{i}{k} (-1)^{i-k} g_i \ &= frac{1}{k!}sumlimits_{i=k}^D frac{i!}{(i-k)!} (-1)^{i-k} g_i \&= frac{1}{k!} sumlimits_{i=0}^{D - k} frac{(-1)^i}{i!} g_{i+k}(i+k)! \&= frac{1}{k!} sumlimits_{i=0}^{D - k} A_{D-k-i} B_iend{aligned} ]

其中

[A_i = (D-i)! g_{D-i} ]

[B_i = frac{(-1)^i}{i!} ]

算出(g)过后卷积就好了。

问题变为如何算(g)

先是(g_k = inom{D}{k} X_k)

(X_k)即为(c_1 cdots c_k)为奇数,(c_{k+1}...c_{D})随意的方案数。

注意到(n)个变量有标号,最后将两部分合并乘起来的时候会有一个组合数。

构造(c_1,c_2,cdots ,c_k)的EGF,即(langle0,1,0,1,cdots angle)这个序列的的指数级生成函数,为(frac{e^x - e^{-x}}{2}),那么这一部分的EGF即为(left(frac{e^{x} - e^{-x}}{2} ight)^k)

(D-k)(c)的EGF就是(e^{x(D-k)})

那么

(X_k = n![x^n]left[ left( frac{e^x-e^{-x}}{2} ight)^k e^{x(D-k)} ight]=frac{n!}{2^k}[x^n]left[ left( e^x-e^{-x} ight)^k e^{x(D-k)} ight])

(n)那么大咋阶乘呢......继续往下推

二项式定理暴力展开后面那坨

[egin{aligned}&quad (e^{x} - e^{-x})^ke^{x(D-k)} \&= sumlimits_{i=0}^k inom{k}{i} (-1)^{k-i} e^{xi}e^{-x(k-i)}e^{x(D-k)} \&= sumlimits_{i=0}^k inom{k}{i} (-1)^{k-i} e^{(2i-2k+D)x} \&= sumlimits_{i=0}^k inom{k}{i} (-1)^{k-i} sumlimits_{j=0}^{infty} frac{(2(i-k)+D)^j}{j!} x^j \&= sumlimits_{j=0}^{infty} frac{x^j}{j!} sumlimits_{i=0}^k inom{k}{i} (-1)^{k-i} (D-2(k-i))^j \&= sumlimits_{j=0}^{infty} x^j frac{k!}{j!} sumlimits_{i=0}^k frac{(-1)^{k-i}(D-2(k-i))^j}{i!(k-i)!}end{aligned} ]

于是

[[x^n]left[ left(e^x - e^{-x} ight)^ke^{x(D-k)} ight] = frac{k!}{n!} sumlimits_{i=0}^k frac{(-1)^{k-i}(D-2(k-i))^n}{i!(k-i)!} ]

乘上去,(n!)果不其然的蒸发了

[X_k = frac{k!}{2^k}sumlimits_{i=0}^k frac{(-1)^{k-i}(D-2(k-i))^n}{(k-i)!} imes frac{1}{i!} ]

我们甚至也把(k!)搞掉了尽管没什么用

[g_k = frac{D!}{(D-k)!2^k}sumlimits_{i=0}^k frac{(-1)^{k-i}(D-2(k-i))^n}{(k-i)!} imes frac{1}{i!} ]

标准的卷积(

卷出(g)再卷到(f)就好了

注意特判一下(n - 2m ge D)时答案为(D^n)(n - 2m < 0)时答案为(0)

代码: https://paste.ubuntu.com/p/DPtMCrGR6P/

copy了之前多项式的板子,没删干净,显得丑陋而冗长 /kk

以上是关于[题解] LuoguP5401 [CTS2019]珍珠的主要内容,如果未能解决你的问题,请参考以下文章

luogu P5401 [CTS2019]珍珠

CTS2019 题解

[题解] LuoguP5443 [APIO2019]桥梁

loj3120CTS2019珍珠

loj3120. 「CTS2019 | CTSC2019」珍珠

luoguP1084 疫情控制(题解)(搜索+贪心)