考试题目 2020.6.12 T2

Posted parauni-blog

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了考试题目 2020.6.12 T2相关的知识,希望对你有一定的参考价值。

题意简述

给定两个长度为 (N(Nleq 10^5)) 的非负整数序列 (a)(b) 。定义 (b)(k) 变换后得到的 序列 (b‘)(b‘_i=b_{(i+k) mod d}) 。要求求出所有的 (k) ,满足 (b)(k) 变换后的 (b‘) 序列满足:存在一个 (m) 次的多项式 (P(t)) ,使得 (forall tin[0,n)) ,均满足 (P(t) equiv a_t-b‘_tpmod{998244353})

题意分析

? 定义两个序列相似:若存在一个 (m) 次的多项式 (P(t)) ,使得 (forall tin[0,n)) ,均满足 (P(t)=A_t-B_t) ,则称序列 (A) 与序列 (B) 相似,记做 (A hicksim B) 。序列相似具有传递性:若 (A hicksim C)(B hicksim C) ,则 (A hicksim B)

? 假定序列长度恰好是 (m+2) 。根据序列相似的传递性,我们可以考虑间接证明 (A)(B) 是否相似。构造长度同样为 (m+2) 的全 (0) 序列 (C={0,0,0,...})(下标从 (1) 开始)。利用 (A)(C) 的前 (m+1) 位做差构造出多项式 (R) ,再令 (C_{m+2}=-R(m+2)+A_{m+2})。那么此时得到的序列 (C) 与序列 (A) 相似。同时,我们记 (C_{m+2}) 为序列 (A) 的特征值。则序列 ([A_1,A_{m+2}]) 的特征值 (lambda (A_1,A_{m+2})=-sum_{i=1}^{m+1}A_i imes g_i(g_i=prod_{j=1}^{jleq m+1&j e i }frac{m+2-j}{i-j})+A_{m+2}) 。同理可以得到序列 (B) 的特征值。若序列 (A) 的特征值与序列 (B) 的特征值相同,那么 (A hicksim C hicksim B) ;反之,则 (A ot hicksim B)特征值相同是两序列相似的充要条件

? 但是序列的长度可能不是 (m+2)。这时该如何判断序列相似呢?我们可以先令 (alpha(i)=lambda(A_i,A_{i+m+1})) ,同理得到 (eta(i)) 。现在考虑如何通过 (alpha)(eta) 来判断当前情况下序列 (A) (B) 是否相似。这时有一个结论:如果 (alpha(i)=eta(i))(alpha(i+1)=eta(i+1)) ,那么 序列 (A[i,i+m+2])(B[i,i+m+2]) 也是相似的(因为这两个 (m) 次多项式过了相同的 (m+1) 个点,所以这两个多项式是等同的)。也就是说,如果在 ([1,n-m-1]) 的这一段前缀中均有 (alpha(i)=eta(i)) 那么 (A hicksim B)

? 但是 (B) 还可以旋转。如果每次旋转都重新求特征值,复杂度显然不能接受。考虑到当 (B) 旋转时,序列 ([l,r]) 变成了 ([l+k,r+k]),它们所对应的多项式的图像仅仅是横坐标均 (+k) 而已,但是特征值只与纵坐标有关。故:旋转不会改变特征值。再深入思考,既然旋转不会改变特征值,那么在最原始的 (B) 序列中,最后面 (m+1) 个数的 (eta) 值就可以通过倍增 (B) 处理出来。得出完整的 (eta) 序列后,再与 (alpha) 做一次字符串匹配统计相同的前缀个数以及位置就可以了。

? 最后的关键问题:在求解 (alpha)(eta) 时,若对每个点暴力求解,复杂度高达 (O(n imes m)) 无法接受。而其实 (alpha(x)=sum_{i=x}^{m+x+2} A_i imes g_i)两个多项式的下标相同时做法可以用减法卷积FFT来优化 。于是这个题就完结撒花了。于是这个人也完结撒花了

反思归纳

针对某个序列的性质,如果能将这个性质折射到某一个数上面,那就再好不过了

以上是关于考试题目 2020.6.12 T2的主要内容,如果未能解决你的问题,请参考以下文章

0417考试总结

0301考试总结

开关问题(等级考试 8 级 2023-2-10 T2)

2019.2.10考试T2, 多项式求exp+生成函数

0339考试总结

5月18日考试错误题目走迷宫