1 条题解
-
0
自动搬运
来自洛谷,原作者为

NaCly_Fish
北海虽赊,扶摇可接。搬运于
2025-08-24 22:56:56,当前版本为作者最后更新于2024-04-05 22:49:21,作者可能在搬运后再次修改,您可在原文处查看最新版自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多
以下是正文
测试点 1(W)
W:Warm-up,即热身。
没有什么特殊性质,数据范围也比较小的一个测试点。这里也不需要什么特殊的优化算法,只需要设 表示从 节点出发的所有点权为 的路径的答案,就可以得到 DP:
$$f_{u,S}=\sum_{(u,v)\in E}w(u,v)\times f_{v,S-w(u)} $$其中 表示 的边权, 表示 节点的权值。直接计算即可,时间复杂度 。
测试点 2,3,4(K)
K:完全图。
在这里,给定的图都是完全图( 条边),且所有边的权值都相等,考虑这种情况下如何计数。由于这是个完全图,任意一个点权和为 的节点序列都是合法的路径。可以枚举路径的长度 ,得到答案是:
$$\sum_{k\geq 1}q^{k-1}[x^V]\left( \sum_{i=1}^n x^{w(i)}\right)^k $$其中 表示边的权值,这个式子的意义也比较明显了( 个位置,每个位置都可以任选一个节点,保证点权和为 即可)。化简一下就是
设 是最大的点权,使用 FFT 优化的 LSB-first 算法,就能简单地做到 的时间复杂度。足以解决测试点 。如果使用矩阵快速幂,也能在可接受的时间内通过测试点 2。
对于测试点 , 很大但递推系数非常稀疏,是形如 的形式,可以直接使用 Extremely Lagged Fibonacci 的做法来处理,不加优化的时间复杂度为 ,这也足够了。
测试点 5,6,7,8(MP)
MP:Matrix Power,即矩阵快速幂。
这里所有点的权值都为 ,设邻接矩阵(带边权)为 ,答案就可以表示为 的所有项之和。下面将根据 的不同性质来优化计算。
测试点 5:
没有什么特殊性质,用朴素的矩阵快速幂即可通过。测试点 6:
$$\bold M=\begin{bmatrix} a_1 & a_2 & a_3 & \cdots & a_{n-1} & a_n \\ 1 & 0 & 0 & \cdots & 0 & 0 \\ 0 & 1 & 0 & \cdots & 0 & 0 \\0 & 0 & 1 & \cdots & 0 & 0 \\ \cdots & \cdots & \cdots & \cdots & \cdots & \cdots \\ 0 & 0 & 0 & \cdots & 1 & 0 \end{bmatrix} $$
可以观察到 是这个样子的:这是什么?经典的常系数线性递推的转移矩阵啊!设
已知 ,由此可以计算出 (是一个小于 次的多项式),而 的 到 项系数之和就是答案,即:
还是用常系数线性递推的方法直接计算,时间复杂度 。
测试点 7:
这里 是一个上三角矩阵,且主对角线上的值互不相同,由此可知其特征值就对应为主对角线上的值,而且 可以进行相似对角化。所以答案可以表示为的形式,这样就可以把 对 取模后再计算。设答案的生成函数为
由于 较为稀疏,其中 的前 项是可以暴力计算的,然后就可以利用类似测试点 6 的方法求出 ,然后就容易处理了。
测试点 8:
给定的图是这个样子的(其中所有奇数号点都有一个自环没有画出):

当然 号点的后面还有,这里只是展示了一部分。设 为从第 大的奇数号点开始走的答案关于 的生成函数,类似地设 表示偶数号点的情况,可以得到方程:
$$\begin{cases} F_k(x) = x(G_k(x)+F_k(x)+F_{k-1}(x)) +x \\ G_k(x) = xF_k(x)+ x\end{cases} $$我们最终要求所有点的答案之和,可以直接求出
$$S_k(x)=F_k(x)+G_k(x)=\frac{xS_{k-1}(x)+2x}{1-x-x^2} $$其中
这个递推式的形式简单,但是算起来有点复杂,设
可以解出
设 ,则答案为
$$[x^V]\sum_{k=1}^N S_k(x)=[x^V]\left( \frac{1+(n-4)x+(1-2n)x^2+(2-n)x^3}{(1-2x-x^2)^2}+\frac{x^{N+2}(1+x)^2}{(1-2x-x^2)^2(1-x-x^2)^N}\right) $$简单分析一下,第一项中的分母,可以拆为 ,这里 在模 意义下存在,所以这一项的值关于 有长度为 的循环节。
对于第二项:
$$1-x-x^2=\left(1- \frac{1+\sqrt 5}{2}x\right)\left( 1-\frac{1-\sqrt 5}{2}x\right) $$特征根在模意义下并不存在,但是其 次方为 。两部分综合一下,只需要将 对 取模后计算即可。
测试点 9(R)
R:Ring,即环。
此数据点中的图是一个环,有 条边的连通图。
考虑从一个点出发时,要先绕着环走 圈( 为所有节点的权值和)。剩下的距离可以用一个区间 来确定,每次 增加 , 依次往后扫找到合适的位置。时间复杂度为 ,注意需要使用高精度除低精度来计算 。
测试点 10(Finale)
每个点都有一个自环,除此之外没有其它的边,答案就非常简单了。顺带说一下这里的彩蛋:输入的节点权值其实是 ASCII 码,对应转换过来就是
Welcome to the end. Hope you enjoy my contest!。
- 1
信息
- ID
- 9859
- 时间
- 1000ms
- 内存
- 512MiB
- 难度
- 7
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者