• [题解] 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

  • 相关阅读:
    大二(上期)学期末个人学习总结
    《梦断代码》阅读笔记01
    软件工程概论课程评价
    03《构建之法》阅读笔记第三篇(终结篇)
    02《构建之法》阅读笔记第二篇
    个人简评——2345王牌拼音输入法
    《人件集》阅读笔记第一篇
    个人学习进度条
    AcWing ST算法(区间求最值)打卡
    AcWing 101. 最高的牛 (差分) 打卡
  • 原文地址:https://www.cnblogs.com/wxq1229/p/13194755.html
Copyright © 2020-2023  润新知