zoukankan      html  css  js  c++  java
  • hdu3068 最长回文

    manacher模板题。
    这里推荐这篇博文,讲得很清晰,一下就懂了。

    #include <iostream>
    #include <cstring>
    #include <cstdio>
    using namespace std;
    char a[220005];
    int len, p[220005];
    int manacher(){
    	int id=0, mx=0, maxlen=0;
    	len = len * 2 + 1;
    	for(int i=1; i<len; i++){
    		if(i<mx)	p[i] = min(p[2*id-i], mx-i);
    		else	p[i] = 1;
    		while(a[i-p[i]]==a[i+p[i]])	p[i]++;
    		if(mx<i+p[i])	mx = i + p[i], id = i;
    		maxlen = max(maxlen, p[i]);
    	}
    	return maxlen;
    }
    int main(){
    	while(scanf("%s", a)!=EOF){
    		len = strlen(a);
    		for(int i=len; i>=0; i--){
    			a[2*i+2] = a[i];//为了让''也过去
    			a[2*i+1] = '#';
    		}
    		a[0] = '$';
    		printf("%d
    ", manacher()-1);
    	}
    	return 0;
    }
    
  • 相关阅读:
    python timeit模块用法
    boto3库限速
    golang-Beego-orm创建的坑
    Java07
    Java06
    Java04
    Java03
    c
    Mac 安装GCC
    命令: go build
  • 原文地址:https://www.cnblogs.com/poorpool/p/7911762.html
Copyright © 2011-2022 走看看