1 条题解

  • 0
    @ 2025-8-24 21:17:15

    自动搬运

    查看原文

    来自洛谷,原作者为

    avatar luogu_gza
    猫猫怎么这么可爱

    搬运于2025-08-24 21:17:14,当前版本为作者最后更新于2025-01-07 16:26:25,作者可能在搬运后再次修改,您可在原文处查看最新版

    自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多

    以下是正文


    考虑暴力模拟,枚举 T|T|,那么 T=S[1..T]T=S[1..|T|],直接检验即可。

    暴力代码就不给了。


    众所周知一个 border 等价于一个周期,所以我们处理出 s[1..n]s[1..n] 的最大 border 为 ll,然后检查是否满足 (nl)n(n-l) \mid n 即可。

    const int N=1e6+10;
    int n,T;
    char s[N];
    int ne[N];
    void main(){
      n=R;
      scanf("%s",s+1);
      for(int i=2,j=0;i<=n;i++)
      {
        while(j&&s[i]!=s[j+1]) j=ne[j];
        if(s[i]==s[j+1]) j++;
        ne[i]=j;
      }
      if(n%(n-ne[n])==0&&ne[n]!=0) puts("Yes");
      else puts("No");
    }
    
    • 1

    信息

    ID
    11287
    时间
    2000ms
    内存
    512MiB
    难度
    2
    标签
    递交数
    0
    已通过
    0
    上传者