Live2D

Solution -「LOCAL」菜

\(\mathscr{Description}\)

  Private link.

  给定 \(N,L,X,Y,K\),求选出 \(0\le a_1\le a_2\le\cdots a_{N-1}\le X<Y\le a_N\le L\),使得 \(\sum_{i=1}^{N-1}a_i>a_N\),且不存在某个 \(t\)\(a_{1..N}\) 中出现超过 \(K\) 次的方案数。答案对 \((10^9+7)\) 取模。

  \(N\le8\),其他 \(\le10^9\)

\(\mathscr{Solution}\)

  我走起来就是一个二元 GF:

\[\cdots=\prod_{i=0}^X\frac{1-y^{K+1}x^{i(K+1)}}{1-yx^i}. \]

止步于此,大脑空空。惨痛地,我们认识到,尽量不要为了在“描述”时偷懒,毫无顾忌地引入二元。

  先从 \(K\) 次入手,为方便描述集合划分,钦定 \(a_{1..N}\) 乱序排列。那么,设某个值出现了 \(t\) 次,就应当有描述其方案数贡献的 EGF 中,\([z^t]G(t)=[t\le K]t!\cdot\frac{1}{t!}=[t\le K]\)。我们可以 \(\mathcal O(\operatorname{partition}(N))\) 枚举出现次数集合,却很难保证不同集合对应的值确实不同。为此,考虑一个被钦定大小为 \(t\) 的集合的容斥因子贡献,设其 EGF 为 \(F(z)\),就有 \(G=\exp F\Rightarrow F=\ln G\)\([z^t]F(z)\) 就是该集合的容斥系数。

  接着描述选出前 \(N-1\) 个数的过程。枚举 \(n-1\) 的划分 \(c_{1..m}\),有

\[M(z)=\prod_{i=1}^m \frac{1-z^{c_i(X+1)}}{1-z^{c_i}}. \]

对于 \(s=\sum_{i=1}^{N-1}\in (Y,L]\),其对应 \(a_N\) 的方案数为 \(s-Y\)。这一部分的和为

\[\sum_{s=Y+1}^L(i-Y)[z^i]M(z)=([z^L]-[z^{Y}])\left(\frac{z}{1-z}M'(z)-\frac{Y}{1-z}M(z)\right). \]

用 EI 求 \([z^n]P(z)/Q(z)\) 的科技(就是常系数齐次线性递推那个)可以算出来。对于 \(s>L\),其贡献为

\[([z^{\infty}]-[z^L])\frac{1}{1-z}M(z). \]

\(z\rightarrow 1\) 洛一洛就能算前一项,后一项和前面类似。复杂度大概是 \(\mathcal O(\operatorname{partition}(n)\operatorname{polylog}(n)\log L)\)

\(\mathscr{Code}\)

  呜……不想写。

  所以上面的式子可能都是错的,诶嘿。(

posted @ 2022-05-30 20:19  Rainybunny  阅读(66)  评论(0编辑  收藏  举报