求hack,我这个做法应该是错解,但能得80分

P3435 [POI2006] OKR-Periods of Words

lsc72 @ 2024-07-30 20:21:10

#include<bits/stdc++.h>
using namespace std;
long long k,nest[2000010];
int main(){
    ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
    cin>>k;
    string s;
    cin>>s;
    nest[1]=0;
    for (int i=2;i<=s.size();i++){
        int p=i-1;
        while (p&&s[i-1]!=s[i-1-p]) p=nest[p];
        nest[i]=p;
    }
    long long ans=0;
    for (int i=1;i<=s.size();i++) ans+=nest[i];
    cout<<ans;
    return 0;
}

这边判断p>=i/2,加不加结果都一样。 提交记录https://www.luogu.com.cn/record/169552613


by lsc72 @ 2024-07-30 20:59:39

此帖已结,该代码无法考虑如 6 361331的情况


|