牛客练习赛57 D.回文串(PAM)
发布日期:2021-06-30 10:30:35
浏览次数:2
分类:技术文章
本文共 1216 字,大约阅读时间需要 4 分钟。
直接建回文树,得到以 i i i结尾/开始的最大回文串长度
然后枚举分割点 O ( n ) O(n) O(n)取 m a x max max即可
比较模板的题
#includeusing namespace std;const int maxn = 4e5+10;struct PAM{ int fail[maxn],zi[maxn][27],len[maxn],id,las; int pre[maxn],suf[maxn],qui[maxn];//[1,i]结束 char a[maxn]; PAM() { fail[0] = 1, fail[1] = 1; len[0] = 0, len[1] = -1; las = id = 1; } int get_fail(int u,int index) { while( a[index]!=a[index-1-len[u]] ) u = fail[u]; return u; } void insert(int c,int index) { int u = get_fail(las,index); if( zi[u][c]==0 ) { int newnode = ++id, v = get_fail( fail[u],index); len[newnode] = len[u]+2; pre[index] = max( pre[index],len[newnode] ); suf[index-len[newnode]+1] = max( suf[index-len[newnode]+1],len[newnode] ); fail[newnode] = zi[v][c], zi[u][c] = newnode; } las = zi[u][c]; } void solve() { cin >> ( a+1 ); int n = strlen( a+1 ); for(int i=1;i<=n;i++) insert( a[i]-'a',i ); int ans = 0; for(int i=1;i<=n;i++) pre[i] = max( pre[i],1 ),suf[i] = max( suf[i],1 ); for(int i=1;i<=n;i++) pre[i] = max( pre[i],pre[i-1] ); for(int i=n;i>=1;i--) suf[i] = max( suf[i],suf[i+1] ); for(int i=2;i<=n;i++) ans = max( ans,pre[i-1]+suf[i] ); cout << ans; }}pam;int main(){ pam.solve();}
转载地址:https://issue-is-vegetable.blog.csdn.net/article/details/114602801 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
做的很好,不错不错
[***.243.131.199]2024年04月10日 19时13分58秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
UVA 11426 GCD - Extreme (II)(欧拉函数)
2019-04-30
HDU-2838 Cow Sorting(树状数组)
2019-04-30
POJ-2299 Ultra-QuickSort(树状数组)(离散化)
2019-04-30
POJ-1655 Balancing Act(树的重心)
2019-04-30
POJ-3140 Contestants Division(树dp)
2019-04-30
2017 ACM-ICPC 亚洲区(西安赛区)网络赛 C. Sum
2019-04-30
HDU-6214 Smallest Minimum Cut(最大流)
2019-04-30
Windows安装Scrapy库
2019-04-30
HDU-2586 How far away ?(LCA)
2019-04-30
hihocoder #1069 : 最近公共祖先·三(ST求LCA)
2019-04-30
hackerrank Lucky Numbers(扩展gcd/规律)
2019-04-30
HDU 5115 Dire Wolf(区间dp)
2019-04-30
Wannafly挑战赛1 A.Treepath(dfs)
2019-04-30
leetcode 10. Regular Expression Matching(dp)
2019-04-30
Recall, Precision, and Average Precision
2019-04-30