博客园 首页 私信博主 显示目录 隐藏目录 管理 动画

集美大学第九届程序设计竞赛 E(生成函数,莫比乌斯反演,斯特林数)

是一个非常恶心的推柿子题。。

用$f(d)$表示用了d个字符, 拼成长度为n的字符串的方案

$$f(d) = (e^x-1)^d[\frac{x^n}{n!}] \binom{n}{d}$$

用$g(d)$表示用了d个字符, 拼成长度为n的字符串对应的权重

$$g(d) = \frac{\sum_{i=n-d}^{min(n-d, n-1) + n - 1} lcm(i-(n-d)+1, n)}{n-d+1} \\ = \frac{1}{n-d+1} \sum_{i=1}^{n} lcm(i, n)$$

对于$h(n) = \sum_{i=1}^n lcm(i, n)$可以反演后$O(nlnn)$快速预处理

$$\sum_{i=1}^n lcm(i, n) \\ = n \sum_{i=1}^n \frac{i}{gcd(i, n)} \\= n \sum_{d|n} \sum_{d|i} i[gcd(i,n)=d] \\ = n \sum_{d|n} \sum_{d|i} i[gcd(\frac{i}{d}, \frac{n}{d}) = 1] \\ = n \sum_{d|n} \sum_{i=1}^d i[gcd(i,d)=1] \\ = n\sum_{d|n} \sum_{x|d}\mu(x) x \frac{\frac{d}{x}(\frac{d}{x}+1)}{2} \\ = n\sum_{d|n} \frac{d\phi(d)}{2}$$

考虑$f(d)$怎么求

$$\binom{n}{d} (e^x-1)^d[\frac{x^n}{n!}] \\ = \binom{n}{d} \sum_{j=0}^{d} \binom{d}{j} e^{jx}[\frac{x^n}{n!}] (-1)^{d-j} \\ = \binom{n}{d} \sum_{j=0}^{d} \binom{d}{j} j^n (-1)^{d-j} \\ = \frac{1}{(n-d)!} \sum_{j=0}^{d} \frac{n!}{j!(d-j)!}  j^n (-1)^{d-j} \\ = \frac{n!}{(n-d)!}  {n \brace d}$$

考虑怎么求$\sum_{d=1}^n f(d)g(d)$

$$\sum_{d=1}^n f(d)g(d) \\ = \sum_{d=1}^n h(n) \frac{n!}{(n-d+1)!}  {n \brace d} \\ = h(n) \sum_{d=1}^n \frac{n!}{(n-d+1)!} {n \brace d} \\ = \frac{h(n)}{n+1} \sum_{d=1}^n \frac{(n+1)!}{(n+1-d)!} {n \brace d} \\ = \frac{h(n)}{n+1} \sum_{d=1}^n (n+1)^{\underline{d}}{n \brace d} \\ = h(n) (n+1)^{n-1}$$

然后只需要调和级数预处理, 以及快速幂就行了

用到的几个trick

  1. $x^n = \sum_{i=0}^n {n\brace i} x^{\underline i}$
  2. $e^{dx}[x^n] = \frac{d^n}{n!}$
  3. $(e^x-1)^d[\frac{x^n}{n!}] = {n\brace d}d!$
posted @ 2022-10-26 20:16  gllonkxc  阅读(39)  评论(0编辑  收藏  举报