zoukankan      html  css  js  c++  java
  • Test0612 继续扮演

    题意简述

    给定两个长度为 (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来优化 。于是这个题就完结撒花了。于是这个人也完结撒花了

    反思归纳

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

  • 相关阅读:
    构建helm chart应用
    关于使用KubeSphere中的docker配置Harbor仓库http访问docker login登陆报错的解决办法
    Harbor配置自签名证书,docker login+web https访问,helm chart推送应用
    Harbor仓库配置https访问
    Chart 文件结构
    helm chart应用使用示例
    docker-compose命令使用说明
    访问Harbor报502 Bad Gateway
    harbor helm仓库使用
    Helm命令日常使用
  • 原文地址:https://www.cnblogs.com/parauni-blog/p/13137566.html
Copyright © 2011-2022 走看看