25暑假第二周数学题做题记录

前言

前几天 jeefy 来讲数学,找的题目困难,讲课内容困难。下来做了不少题,于是准备写一下博客复习一下,这篇博客以沉浸式推式子为主(?)

但是因为博主太懒导致周内没补完,于是留到了后面补()

这里只放了笔者认为比较有价值的但不包括之前已经写过的题。

数列求和加强版

在开始前我们可以先判掉 \(a=1\) 的情况。此时答案变成了 \(\sum i^k\),我们可以 \(\mathcal O(k)\) 拉插求解,具体可见 CF622F

在这里我们还是证一下这个东西是 \(k+1\) 次多项式。

证明考虑扰动法

\[\begin{aligned} S_k(n)&=\sum_{i=0}^ni^k\\ &=\sum_{i=0}^n(i+1)^k-(n+1)^k\\ &=\sum_{i=0}^n\sum_{j=0}^k{k\choose j}i^j-(n+1)^k\\ &=\sum_{j=0}^k{k\choose j}S_j(n)-(n+1)^k\\ &=\sum_{j=0}^{k-2}{k\choose j}S_j(n)+kS_{k-1}(n)+S_k(n)-(n+1)^k \end{aligned} \]

化简有:

\[S_k(n)={(n+1)^{k+1}-\sum\limits_{i=0}^{k-1}{k+1\choose i}S_i(n)\over k+1} \]

这个东西就可以拉插了。正片结束赠片开始。

开始沉浸式推式子,对于这种 \(n\) 巨大的式子我们的想法是考虑有限积分。设 \(f(n)=\sum_0^nx^ka^x\delta x\),那么我们要求的即为 \(f(n+1)-f(1)\)。对于普通版我们可以直接把 \(f(n)\) 里面的普通幂拆成下降幂直接做,但是这样你需要求斯特林数,复杂度是 \(\mathcal O(n^2)\)\(\mathcal O(n\log n)\) 的:

\[\begin{aligned} \sum_{i=1}^ni^ka^i&=\sum_{j=0}^k{k\brace j}\sum_{i=1}^ni^{\underline{j}}a^i\\ &=\sum_{i=0}^k{k\brace i}\sum\nolimits_{1}^{n+1}x^{\underline{i}}a^x\delta x \end{aligned} \]

我们可以对式子进行分部求和:

\[\sum u\Delta v=uv-\sum \text Ev\Delta u \]

于是就有:

\[\begin{aligned} \sum\nolimits x^{\underline{k}}a^x\delta x&={x^{\underline{k}}a^x\over a-1}-\sum{a^{x+1}\over a-1}kx^{\underline{k-1}}\delta x\\ &={x^{\underline{k}}a^x\over a-1}-{ka\over a-1}\sum a^{x}x^{\underline{k-1}}\delta x\\ \end{aligned} \]

最后归纳可得:

\[\sum\nolimits x^{\underline{k}}a^x\delta x={a^x\over a-1}\sum_{i=0}^k\left(-{a\over a-1}\right)^ik^{\underline{i}}x^{\underline{k-i}} \]

我们可以发现这是一个 \(k\) 次多项式,因为启动斯特林数的复杂度无法接受,于是设 \(f(n)=a^ng(x)-a^0g(0)\),可以得到 \(g(m)=a^{-m}(f(m)+g(0))\),注意这里 \(g\)\(k\) 次多项式。

到这里我们如果能够求出 \(g(0)\) 就可以递推出 \(g(x),x\in[1,k]\),然后又因为 \(f\) 是一个 \(k\) 的多项式于是我们就可以 \(\mathcal O(k)\) 拉插求了。考虑求 \(g(0)\)

因为我们知道 \(g\) 是一个 \(k\) 次多项式,所以有:

\[\begin{aligned} \Delta^{k+1}g&=0\\ \left(\text E-1\right)^{k+1}g&=0\\ \sum_{i=0}^{k+1}{k+1\choose i}(-1)^{k+1-i}g(i)&=0\\ \sum_{i=0}^{k+1}{k+1\choose i}(-1)^{k+1-i}a^{-i}[f(i)+g(0)]&=0\\ -\left(1-a\over a\right)^{k+1}g(0)&=\sum_{i=0}^{k+1}{k+1\choose i}(-1)^{k+1-i}a^{-i}f(i)\\ g(0)&=-\left(1-a\over a\right)^{-k-1}\sum_{i=0}^{k+1}{k+1\choose i}(-1)^{k+1-i}a^{-i}f(i) \end{aligned} \]

于是就可以先求出 \(f(i)\) 再得到 \(g(0)\) 了,有了 \(g(0)\) 后就好拉插做了,复杂度 \(\mathcal O(k)\)

有意义的字符串

首先发现这个底数长得非常奇怪,它带了根号,看起来非常不好做。我们能不能想一个什么方法把底数变成整数呢?有的兄弟,有的!经过观察可以发现 \(b+\sqrt d\over2\) 其实是方程 \(x^2-bx+{b^2-d\over4}=0\) 的解。我们考虑换成递推形式:

\[x^2=bx-{b^2-d\over4} \]

拓展可得:

\[x^n=bx^{n-1}-{b^2-d\over4}x^{n-2} \]

我们设 \(f_i=\left({b+\sqrt d\over2}\right)^i+\left({b-\sqrt d\over2}\right)^i\),这样就能保证对于任意的 \(i\) 都能让 \(f_i\) 取整。于是就可以愉快地递推啦!但是需要注意最后去掉不需要的那部分,考虑根据奇偶取正负号,以及 \(n=0\) 的时候特判 0。

CF891E

假设 \(a_i\) 减少 \(b_i\) 答案即为:

\[\prod a_i-\prod(a_i-b_i) \]

于是我们需要求后面 \(\prod\) 的期望。我们可以直接列出式子:

\[E={1\over n^k}{k\choose b_1\ b_2\ \dots\ b_n}\prod(a_i-b_i) \]

我们考虑把碍眼的多重组合数拆开,有:

\[E={k!\over n^k}\prod{a_i-b_i\over b_i!} \]

于是我们就去思考后面的神秘东西能否用生成函数刻画?因为 \(\prod\) 的下标满足 \(\sum b_i=k\),于是考虑把 \(b_i\) 放在指数上,于是构造:

\[F_i(x)=\sum_n {a_i-n\over n!}x^n=(a_i-x)e^x \]

于是能够写出:

\[E=e^{nx}\prod(a_i-x) \]

于是就可以分治 NTT 做了,时间复杂度 \(\mathcal O(n\log n)\)

青春有悔

一道有意思的计数题。算概率相当于合法的情况,因为总情况是容易得到的。我们思考如何表示出某一种得分的情况,这个显然用生成函数刻画。对于第 \(i\) 天我们用生成函数 \(F_i(x)=\sum\limits_{k=0}^{a_i} x^k\) 表示,显然它还有封闭型式:\(1-x^{a_i+1}\over1-x\)。于是我们就能方便地表示出考试的情况了:

\[G=\prod_{i=1}^n{1-x^{a_i+1}\over1-x} \]

考虑到合法的情况是一段后缀,于是我们运用 P5488 的一点小技巧,令 \(G\leftarrow G\times{1\over1-x}\),然后就变成了求单点的信息。观察到后面的询问都是在最开始状态的基础上单点修改,所以考虑快速求出 \(G\) 然后通过 \(G\) 直接求答案。

我们接下来处理 \(G\)。考虑对其进行化简:

\[G=\left({1\over1-x}\right)^{n+1}\prod_{i=1}^n(1-x^{a_i+1}) \]

我们分别处理出前后两部分最后再拼到一起。先考虑前面的部分,我们尝试广义二项式定理:

\[\begin{aligned} \left({1\over1-x}\right)^{n+1}&=(1-x)^{-n-1}\\ &=\sum_{i=0}^\infty{-n-1\choose i}(-x)^i\\ &=\sum_{i=0}^\infty(-1)^i{i-(-n-1)-1\choose i}(-x)^i\\ &=\sum_{i=0}^\infty{n+i\choose i}x^i\\ \end{aligned} \]

其中第三行运用上指标反转。这样我们轻松得到了前半部分,接下来考虑后面怎么搞。注意到后面有 \(\mathcal O(n)\) 个少项式进行 \(\prod\) 运算,于是考虑 P4389 的技巧,通过 \(\exp\ln\) 将连乘变成连加。不考虑 \(\exp\) 现在我们要处理的是:

\[\sum_{i=1}^n\ln(1-x^{a_i+1}) \]

注意到有 \(-\ln(1-x)=\sum\limits_{i=0}^\infty{x^i\over i}\),所以有:

\[\sum_{i=1}^n\ln(1-x^{a_i+1})=-\sum_{i=1}^n\sum_{j=1}^\infty{x^{(a_i+1)j}\over j} \]

证明上面的式子是相等的方法考虑对两边同时求导。所以后半部分调和级数枚举即可求得。现在加入单点修改我们就直接写式子了:

\[ans=[x^{b-1}]{1-x^{a+1}\over1-x^{a_p+1}}G=[x^{b-1}]{G\over1-x^{a_p+1}}-[x^{b-a-2}]{G\over1-x^{a_p+1}} \]

于是我们需要处理两个形如 \([x^b]{G\over1-x^a}\) 的式子。注意到一次询问中的 \(a\) 会对 \(ka,k\in \mathbb Z+\) 的位置产生影响所以考虑根号分治,对于 \(a\le\sqrt n\) 的情况我们提前对每个 \(a\) 都暴力算出每一位的值并记下来,询问的时候直接 \(\mathcal O(1)\) 查;对于 \(a>\sqrt n\) 的时候因为需要改的位置很少于是就在询问时暴力改即可,时间复杂度 \(\mathcal O(n\ln n+n\sqrt n)\)

Cards 加强版

推式子纯享版。

首先考虑列出答案的式子,这是容易的:

\[\sum_{i=1}^n{n\choose i}\left({1\over m}\right)^i\left({m-1\over m}\right)^{n-i}i^k \]

然后就开始长达 11 步的推式子,其实挺简单的:

\[\begin{aligned} \text{原式}&=\sum_{i=1}^n\sum_{j=0}^k{k\brace j}{n\choose i}{i\choose j}\left({1\over m}\right)^i\left({m-1\over m}\right)^{n-i}j!\\ &=\sum_{i=1}^n\sum_{j=0}^k{k\brace j}{n\choose i}{i\choose j}\left({1\over m}\right)^i\left({m-1\over m}\right)^{n-i}j!\\ &=\sum_{i=1}^n\sum_{j=0}^k{k\brace j}{n\choose j}{n-j\choose i-j}\left({1\over m}\right)^i\left({m-1\over m}\right)^{n-i}j!\\ &=\sum_{j=0}^k{k\brace j}{n\choose j}j!\sum_{i=1}^n{n-j\choose i-j}\left({1\over m}\right)^i\left({m-1\over m}\right)^{n-i}\\ &=\sum_{j=0}^k{k\brace j}{n\choose j}j!\left({1\over m}\right)^j\sum_{i=1}^n{n-j\choose i-j}\left({1\over m}\right)^{i-j}\left({m-1\over m}\right)^{n-i}\\ &=\sum_{i=0}^k{k\brace i}{n\choose i}i!\left({1\over m}\right)^i\\ &=\sum_{i=0}^k\sum_{j=0}^i{n\choose i}{i\choose j}{i!\over i!}(-1)^{i-j}j^k\left({1\over m}\right)^i\\ &=\sum_{i=0}^k\sum_{j=0}^i{n\choose j}{n-j\choose i-j}(-1)^{i-j}j^k\left({1\over m}\right)^i\\ &=\sum_{j=0}^k{n\choose j}j^k\sum_{i=j}^k{n-j\choose i-j}(-1)^{i-j}\left({1\over m}\right)^i\\ &=\sum_{j=0}^k{n\choose j}j^k\left({1\over m}\right)^j\sum_{i=j}^k{n-j\choose i-j}(-1)^{i-j}\left({1\over m}\right)^{i-j}\\ &=\sum_{j=0}^k{n\choose j}j^k\left({1\over m}\right)^j\sum_{i=0}^{k-j}{n-j\choose i}\left(-{1\over m}\right)^{i}\\ \end{aligned} \]

最后那个 \(\sum\) 要注意分讨一下 \(n\)\(k\) 的大小关系,时间复杂度 \(\mathcal O(k)\)

posted @ 2025-07-22 20:39  Lyrella  阅读(57)  评论(1)    收藏  举报