manacher板子
2016-05-30 18:12
211 查看
hdu5371
http://acm.hdu.edu.cn/showproblem.php?pid=5371
http://acm.hdu.edu.cn/showproblem.php?pid=5371
#include <cstdio> #include <iostream> #include <algorithm> #define MAXN 100010 using namespace std; int n; int d[MAXN]; int st[MAXN*2]; int p[MAXN*2]; int len; void manacher() { int MaxId=0,id; for(int i=0; i<len; i++) { if(MaxId>i) p[i]=min(p[2*id-i],MaxId-i); else p[i]=1; while(st[i+p[i]]==st[i-p[i]]) p[i]++; if(p[i]+i>MaxId) { id=i; MaxId=p[i]+i; } } } int main() { int T; scanf("%d",&T); for(int t=1; t<=T; t++) { scanf("%d",&n); for(int i = 0; i <= 2*n+1; i++) p[i] =0; len = 0; st[len++]= -2; st[len++]= -1; for(int i=1; i<=n; ++i) { scanf("%d",&st[len++]); st[len++] = -1; } st[len] = 0; manacher(); int maxans=1; for(int i = 3; i < len; i+=2) for(int j = maxans; j <= p[i]; j+=2) { if(p[j+i-1] >= j) maxans = j; } printf("Case #%d: %d\n",t,(maxans)/2*3); } return 0; }</span>
相关文章推荐
- 【HDU 5366】The mook jong 详解
- 【HDU 2136】Largest prime factor 详细图解
- 【HDU 1568】Fibonacci 数学公式 详解
- HDU 1568
- HDU1290
- HDU1568(Fobonacci公式)
- HDU ACM Step 2.2.2 Joseph(约瑟夫环问题)
- HDU 1405
- HDU 1297
- hdu 1205
- hdu 2087
- hdu 1016
- HDU 4898 The Revenge of the Princess’ Knight ( 2014 Multi-University Training Contest 4 )
- HDU 5592 ZYB's Premutation 线段树(查找动态区间第K大)
- HDU 5240 Exam (好水的题)
- HDU5237 Base64 大模拟
- HDU 1000
- HDU 1001
- HDU 1016 Prime Ring Problem
- HDU 1017 A Mathematical Curiosity