前言
前几天 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。
假设 \(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)\)。
推式子纯享版。
首先考虑列出答案的式子,这是容易的:
\[\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)\)。