2023.1.21 闲话

首先祝大家新年快乐吧 .

现在发闲话也是挺极限的,反正 1.21 有闲话啦!

dottle 头像原来是 index 吗……我怎么以前一直没看出来(

推一下喝茶P的新歌 除了我大家都是笨蛋 .

看 joke3579 的转置原理发现又有「求若干次数和一定的有理分式之和」/fn

joke3579 的问题:

数列多幂次求和

给数列 \(\{a_n\}\),对于 \(k\in[0,n)\)\(\displaystyle\sum_{i=1}^na_i^k\) .

答案关于 \(k\) 的 OGF 就是

\[F(z)=\sum_{i=1}^n\dfrac{1}{1-a_iz} \]

这是求若干次数和一定的有理分式之和,可以通过分治 NTT 在 \(\Theta(\mathsf M(n)\log n)\) 时间求解 .

或者考虑直接计算分子分母的式子,原式显然等价于

\[F(z) \prod_{i = 1}^n (1 - a_iz) = \sum_{i = 1}^n \prod_{j \neq i} (1 - a_iz) \]

都可以分治 NTT,这样也是 \(\Theta(\mathsf M(n)\log n)\) .

最后还得用一次求逆算出 \(F(z)\bmod x^n\) 才能求答案 .

然而上面的东西都不是重点 .


好像分治 NTT 挺难分析复杂度,下面试分析一下:

首先考虑最平凡的问题:给一组多项式 \(\{f_m\}\) 满足 \(\displaystyle\sum_{i=1}^m\deg f_i=O(n)\),求 \(\displaystyle\prod_{i=1}^mf_i\)(那个分式求和的是这个的直接推论).

首先考虑启发式合并,下面是 myee 给出的做法:

考虑最后一次合并

\[T(n)=T(a)+T(n-a)+\mathsf M(n) \]

\(a<\dfrac n3\),那么分治下去 \(n-a\) 的部分肯定是只有一个多项式,于是可以把原递归式改写为:

\[T(n)=T(a)+\left[a\ge\dfrac n3\right]T(n-a)+\mathsf M(n) \]

这个式子渐进意义下和原式相同 .

想一棵递归树可以得到有 \(\Theta(\log n)\) 层,每层是 \(\mathsf M(n)\),于是复杂度就是 \(\Theta(\mathsf M(n)\log n)\) .

也不一定要这样合,在中点分治的复杂度同样是正确的 .

我口胡一波先,考虑递归树,考虑一次乘法哪边度数大算哪边贡献,于是总共乘法只有 \(\Theta(\log n)\) 次的贡献,于是复杂度就是 \(\Theta(\mathsf M(n)\log n)\) .

也不知道对不对,就这样吧 .

posted @ 2023-01-21 23:59  Jijidawang  阅读(58)  评论(0编辑  收藏  举报
😅​