zoukankan      html  css  js  c++  java
  • Hotaru's problem(hdu 5371)

    题意:给出一个数字串,询问最长的子串,满足以下要求:将子串平均分为三部分,一三部分相等,一二部分对衬。

    /*
      在manachar的基础上,枚举回文串的中心,再找第三部分。 
    */
    #include<cstdio>
    #include<iostream>
    #define M 200010
    using namespace std;
    int s[M],a[M],p[M],len;
    void Manancher(){
        int l=0;
        a[l++]=-2;
        a[l++]=-1;
        for(int i=0;i<len;i++){
            a[l++]=s[i];
            a[l++]=-1;
        }
        a[l]=-3;
        int mx=0,id=0;
        for(int i=0;i<l;i++){
            p[i]=mx>i?min(p[2*id-i],mx-i):1;
            while(a[i+p[i]]==a[i-p[i]])p[i]++;
            if(i+p[i]>mx){
                mx=i+p[i];
                id=i;
            }
        }
    }
    int main(){
        int T,tt=0;
        scanf("%d",&T);
        while(T--){  
            scanf("%d",&len);  
            for(int i=0;i<len;i++)scanf("%d",&s[i]);
            Manancher();
            int ans=0;
            for(int i=1;i<=len*2+1;i+=2){
                for(int j=i+p[i]-1;j-i>ans;j-=2){
                    if(j-i+1<=p[j]){
                        ans=max(ans,j-i);
                        break;
                    }
                }
            }
            printf("Case #%d: %d
    ",++tt,ans/2*3);
        }
        return 0;
    }
  • 相关阅读:
    判断是否IPv6网络
    Makefile使用库
    Makefile编译
    Makefile编译库
    lua定义一个简单的类
    c++ 注册类到 lua
    redis的安装
    yield return的作用
    使用boost的asio,io_service无法初始化
    apache+php+mysql的配置(转载)
  • 原文地址:https://www.cnblogs.com/harden/p/6248903.html
Copyright © 2011-2022 走看看