首页 > 其他分享 >【题解】P5907 数列求和加强版 / P4948 数列求和

【题解】P5907 数列求和加强版 / P4948 数列求和

时间:2024-02-06 16:00:58浏览次数:32  
标签:数列 求和 题解 sum Delta xx delta Theta underline

本题解是对 warzone 的题解的补充。

题意:求

\[\sum_{i=1}^n i^k a^i \]

  • 普通版:\(k\leq 2\times 10^3\)。

  • 加强版:\(k\leq 10^7\)。

首先先考虑普通版

\[\begin{aligned} \sum_{i=1}^n i^k a^i&=\sum_{i=1}^na^i\sum_{j=0}^k {k\brace j}i^{\underline{j}} \\ &=\sum_{j=0}^{k} {k\brace j}\sum_{i=1}^n a^ii^{\underline{j}} \\ &=\sum_{j=0}^{k} {k\brace j}{\sum}_1^{n+1}a^xx^{\underline{j}}\delta x \end{aligned} \]

进行分类讨论。

  • \(a=1\)

\[\begin{aligned} &=\sum_{j=0}^{k} {k\brace j}{\sum}_1^{n+1}x^{\underline{j}}\delta x \\ &=\sum_{j=0}^k {k\brace j}\frac{(n+1)^{\underline{j}}-1^{\underline{j}}}{j+1} \end{aligned} \]

预处理 Stirling 数 \(\Theta(k^2)\) 或 \(\Theta(k\log k)\),递推计算是 \(\Theta(k)\) 的。

  • \(a\neq 1\)

我们有

\[\Delta uv=u\Delta v+\mathbf{E}v\Delta u \]

两边同时求和,得

\[uv=\sum u\Delta v\delta x+\sum\mathbf{E}v\Delta u\delta x \]

\[\sum u\Delta v\delta x=uv-\sum\mathbf{E}v\Delta u\delta x \]

考虑求出 \(a^xx^{\underline{j}}\) 的“原和式”(不定和式)。我们不妨令 \(u=a^x\),\(\Delta v=x^{\underline{j}}\)(则 \(v=\dfrac{x^{\underline{j+1}}}{j+1}\))

于是 \(\sum a^xx^j\delta x=\dfrac{a^xx^{\underline{j+1}}}{j+1}-\sum (x+1)^{\underline{j}}(a-1)a^x\delta x\)

好像不可做。如果令 \(u=x^{\underline{j}}\),\(\Delta v=a^x\)(则 \(v=\dfrac{a^x}{a-1}\))呢?

代入得到

\(\sum a^xx^j\delta x=\dfrac{a^xx^{\underline{j}}}{a-1}-\sum \dfrac{a^{x+1}}{a-1}jx^{\underline{j-1}}\delta x\)

也就是说

\[{\sum}_0^{n+1} a^xx^j=\frac{a^xx^j}{a-1}\bigg|_{0}^{n+1}-\frac{j\cdot a}{a-1}{\sum}_0^{n+1} a^xx^{\underline{j-1}}\delta x \]

边界为 \(j=0\) 时,\(\sum a^xx^j\delta x=\sum a^x\delta x=\dfrac{a^x}{a-1}\)。

预处理 \(\Theta(k^2)\) 或 \(\Theta(k\log k)\),递推计算是 \(\Theta(k)\) 的。

综上,我们在 \(\Theta(k^2)\) 或 \(\Theta(k\log k)\) 的复杂度内解决了普通版。


那么我们考虑加强版。

考虑 \(a=1\),其实就是 CF622F。但是本题中 \(k\leq 10^7\),直接计算每一个数的 \(k\) 次幂可能会寄。

但是我们知道,\(n\) 个数中有 \(\Theta(\dfrac{n}{\ln n})\) 个素数。考虑到 \(\operatorname{Id}^k\) 是一个完全积性函数,于是我们只在素数处计算其 \(k\) 次幂,然后在线性筛时顺便推出其他数的幂即可,这样时间复杂度是 \(\Theta(\dfrac{k\log k}{\ln k})=\Theta(k)\) 的。

以下默认 \(a\neq 1\)。

设 \(\displaystyle f(n)={\sum}_0^n x^ka^x\delta x\),答案即为 \(f(n+1)-f(1)\)。

注意到在普通版中我们有

\[\begin{aligned} \sum a^xx^k\delta x&=\dfrac{\textcolor{red}{a^x}x^{\underline{k}}}{a-1}-\frac{a\cdot k}{a-1}\textcolor{red}{a^{x}}\sum x^{\underline{k-1}}\delta x \\ &=a^x\left(\frac{x^{\underline{k}}}{a-1}-\frac{a\cdot k}{a-1}\sum x^{\underline{k-1}}\right) \end{aligned} \]

\(a^x\) 右边的那一包东西显然是一个 \(k\) 次多项式,不妨设为 \(g(x)\)。则我们有

\[{\sum}_l^r a^xx^k\delta x=a^rg(r)-a^lg(l) \]

\[f(n)=a^ng(n)-a^0g(0) \]

如果我们能知道 \(g(0),g(1),\cdots,g(n)\) 的点值,就不难应用 Lagrange 插值法在 \(\Theta(k)\) 内求出 \(g(n+1)\)。那么问题转化为如何求 \(g(0),g(1),\cdots,g(n)\)。

我们考虑到

\[f(n)=a^ng(n)-a^0g(0) \]

\[g(n)=\frac{f(n)+g(0)}{a^{n}} \]

\(f(0),f(1),\cdots,f(k)\) 可以 \(\Theta(k)\) 递推。那么现在的当务之急就是求出 \(g(0)\) 了。

我们知道 \(\deg g=k\),这意味着 \(\Delta^{k+1} g=0\)。

于是

\[\sum_{i=0}^{k+1}{k+1\choose i}(-1)^{k+1-i}\mathbf{E}^{i}g(0)=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 \]

\[\sum_{i=0}^{k+1}{k+1\choose i}(-1)^{k+1-i}a^{-i}f(i)+\sum_{i=0}^{k+1}{k+1\choose i}(-1)^{k+1-i}a^{-i}g(0)=0 \]

\[\sum_{i=0}^{k+1}{k+1\choose i}(-1)^{k+1-i}a^{-i}f(i)+(a^{-1}-1)^{k+1}g(0)=0 \]

\[g(0)=-(a^{-1}-1)^{-(k+1)}\sum_{i=0}^{k+1}{k+1\choose i}(-1)^{k+1-i}a^{-i}f(i) \]

不难 \(\Theta(k)\) 求出。综上我们在 \(\Theta(k)\) 的时间复杂度内解决了本题。

答案即为 \(a^{n+1}g(n+1)-a\cdot g(1)\)

顺便讲一下如何 \(\Theta(k)\) 插值。

注意到我们只需要算 \(g(n+1)\)。

我们有

\[g(n+1)=\sum_{i=0}^{k}g(i)\frac{\prod_{j\neq i}(n+1-j)}{\prod_{j\neq i}(i-j)}\]

分母就是

\[i(i-1)\cdots 2\cdot 1\cdot (-1)\cdot (-2)\cdots (i-k) \]

即为

\[(-1)^{k-i}i!(k-i)! \]

分子就是

\[\frac{(n+1-0)(n+1-1)\cdots(n+1-k)}{n+1-i} \]

所以分式即为

\[(-1)^{k-i}\frac{(n+1-0)(n+1-1)\cdots(n+1-k)}{(n+1-i)i!(k-i)!} \]

可以前后缀预处理做到严格 \(\Theta(k)\)。

标签:数列,求和,题解,sum,Delta,xx,delta,Theta,underline
From: https://www.cnblogs.com/Starrykiller/p/18009867/sol-p5904-p4948

相关文章

  • 蚯蚓排队题解
    蚯蚓排队题目描述蚯蚓幼儿园有\(n\)只蚯蚓。幼儿园园长神刀手为了管理方便,时常让这些蚯蚓们列队表演。所有蚯蚓用从\(1\)到\(n\)的连续正整数编号。每只蚯蚓的长度可以用一个正整数表示,根据入园要求,所有蚯蚓的长度都不超过\(6\)。神刀手希望这些蚯蚓排成若干个队伍,初始时,每只蚯......
  • Codeforces Round 921 (Div. 1) 题解
    HelloAd-HocForces!A字符集为前\(k\)个小写字母,给定长度为\(m\)的字符串,求所有的长度为\(n\)的字符串是否是这个字符串的子串。(此处字串不连续)如果不是需要给出反例。\(1\len,k\le26\),\(1\lem\le1000\)。\(\sumn,\summ\le10^6\)sol.D1A就是神秘贪心,汗流浃背......
  • U405333 帕鲁世界迷路的一天 题解
    题目链接:帕鲁世界迷路的一天前置弱化版:P3604美好的每一天题解一个非常简单的普通莫队解很容易写出来,具体的看我前置弱化版题解,然而这个复杂度高达\(O(26n\sqrt{q})\),显然无法通过强化版。一种看上去很正确的“假解”我们思考如何去掉这个\(26\),我们猜想:能够组成\(pre[c......
  • [ARC171] A~D 题解
    [ARC171]A~D题解A.NoAttacking最优策略是车隔行放,分讨一下就可以了。if(n<a)cout<<"No\n";else{if(a*2<n)b-=(a+1)*(n-a);else{b-=(n-a)*(n-a);if(b<=0)cout<<"Yes\n";......
  • P3219 [HNOI2012] 三角形覆盖问题&P1222 三角形 题解
    严格单$\log$做法,附实现细节和代码。考虑从左往右扫描线,发现每次操作是线段上端点$-1$,插入线段,删除退化成点的线段。如果某时刻一条线段被另一条完全覆盖,那么这条线段显然不会产生贡献,可以删去。最后得到的线段一定是左端点单调递增时,右端点也单调递增,可以用set维护。当两......
  • P10145 [WC/CTS2024] 线段树 题解
    Link纪念一下场切题。题意:给定一棵(分点不一定为中点)的线段树,给定若干个询问区间,问有多少个线段树上结点的集合,知道了这些结点对应的区间和就可以知道任何一个询问区间的和。从询问区间开始考虑。会发现可以把所有\(a_i\)分成若干个集合,只要知道每个集合的和就可以知道所有询......
  • 浅谈甲类生产厂房应急照明和疏散指示系统的设计问题解析
    摘要:文章结合电气设计项目实践经验,分析了甲类生产厂房消防应急照明和疏散指示系统设计中照明灯和标志灯的设置、疏散走道和疏散通道的规划、集中控制型系统类型的选择、电压等级的选择中存在的问题,总结了相关经验,可以为同类工程提供参考。关键词:甲类生产厂房;消防应急照明和疏散指示......
  • 题解 CF1876B
    题意给定一个数组\([a_1,a_2,a_3.\cdots,a_n]\),一开始所有元素都为白色。你可以选定其中的至少一个元素涂成黑色,共有\(2^n-1\)种涂法。此时对于所有黑色元素\(a_i\),下标为\(i\)的倍数的所有白色元素都将变成绿色。此时数组中所有黑色和绿色元素的最大值记为此种涂法的......
  • 洛谷 P10145 [WC/CTS2024] 线段树 题解--zhengjun
    提供一种考场做法,在思路上和官方题解的差异蛮大的,虽然结果差不多。首先需要发现\([l,r)\)区间可以算出来的充要条件是:如果对于每个选中的节点\(u\),连无向边\((L_u,R_u)\),则当且仅当\(l\)和\(r\)连通时区间\([l,r)\)可以算出来。证明的话,用前缀和理解这些东西,分别考虑......
  • 题解 CF1849D
    萌新的第一篇题解题目大意对于一个初始颜色都为蓝色的数组\(a_1,a_2,\dots,a_n\)其中\(a_n\in\{0,1,2\}\),现在可以进行两个操作:花费\(1\)个金币,将\(a_i\)涂成红色;选择一个红色的\(a_i>0\),将\(a_{i-1}\)或\(a_{i+1}\)涂成红色,同时\(a_i\)减\(1\)。输出金......