QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#341607#801. 回文自动机SoyTony#0 6ms28692kbC++141.3kb2024-02-29 20:04:292024-02-29 20:04:30

Judging History

你现在查看的是最新测评结果

  • [2024-02-29 20:04:30]
  • 评测
  • 测评结果:0
  • 用时:6ms
  • 内存:28692kb
  • [2024-02-29 20:04:29]
  • 提交

answer

#include<bits/stdc++.h>
using namespace std;

typedef long long ll;
const int maxn=1e6+10;

int n;
char s[maxn];

struct PalindromeAutomaton{
    int tot,last;
    int ch[maxn][26];
    int len[maxn],fail[maxn];
    int cnt[maxn];
    vector<int> E[maxn];
    PalindromeAutomaton(){
        tot=1,last=1;
        len[0]=0,fail[0]=1;
        len[1]=-1,fail[1]=1;
    }
    int get_fail(int u,int pos){
        while(s[pos-len[u]-1]!=s[pos]) u=fail[u];
        return u;
    }
    void extend(int pos){
        int c=s[pos]-'a';
        int u=get_fail(last,pos);
        if(!ch[u][c]){
            int f=get_fail(fail[u],pos);
            ch[u][c]=++tot;
            len[tot]=len[u]+2,fail[tot]=f;
        }
        ++cnt[ch[u][c]];
        last=ch[u][c];
    }
    void build(){
        for(int i=0;i<=tot;++i){
            if(i!=1) E[fail[i]].push_back(i);
        }
    }
    void dfs(int u){
        for(int v:E[u]){
            dfs(v);
            cnt[u]+=cnt[v];
        }
    }
    void solve(){
        dfs(1);
        ll ans=0;
        for(int i=2;i<=tot;++i) ans=max(ans,1ll*cnt[i]*len[i]*len[i]);
        printf("%lld\n",ans);
    }
}PAM;

int main(){
    scanf("%s",s+1);
    n=strlen(s+1);
    for(int i=1;i<=n;++i) PAM.extend(i);
    PAM.build();
    PAM.solve();
    return 0;
}

Details

Tip: Click on the bar to expand more detailed information

Subtask #1:

score: 0
Wrong Answer

Test #1:

score: 0
Wrong Answer
time: 6ms
memory: 28692kb

input:

bdgedcfadbabbfgeacdgbggaefddebabbfgeacdgbefaecfddffeddacbabfcgecedacbffeddacbabfebadggfafabcdfdeaabdeecgbcecegcgecedacbfgdagbgagafdegecadfebcdbgfacdecdegecadfebbcdfdeaabdbfgcbccfcaebcecfdfccagdafaeaacbggaefddebcbecdafageeaabcbdafadcbecdbcgcbdgedcfadbcaefbdfcbgfcdeceddaaffgcedfcdcgdcgbfdddfdadgagbbef...

output:

4772

result:

wrong answer expected '5594', found '4772'

Subtask #2:

score: 0
Skipped

Dependency #1:

0%