1 条题解

  • 0
    @ 2026-10-25 20:33:17

    思路

    EOF多串总长40万,包含整串本身,沿失配链找全部前后缀长度后递增输出。

    参考程序(C++11)

    #include <bits/stdc++.h>
    using namespace std;
    vector<int> prefix(const string&s){vector<int>p(s.size());for(int i=1;i<(int)s.size();i++){int j=p[i-1];while(j&&s[i]!=s[j])j=p[j-1];if(s[i]==s[j])j++;p[i]=j;}return p;}int main(){ios::sync_with_stdio(false);cin.tie(nullptr);string s;while(cin>>s){auto p=prefix(s);vector<int>a;for(int k=s.size();k;k=p[k-1])a.push_back(k);reverse(a.begin(),a.end());for(int i=0;i<(int)a.size();i++)cout<<a[i]<<(i+1==(int)a.size()?'\n':' ');}}
    
    • 1

    信息

    ID
    1498
    时间
    1000ms
    内存
    64MiB
    难度
    普及
    标签
    递交数
    1
    已通过
    1
    上传者