zoukankan      html  css  js  c++  java
  • 备战NOIP——模板复习25

    这里只有模板,并不作讲解,仅为路过的各位做一个参考以及用做自己复习的资料,转载注明出处。

    Manacher算法

    /*Copyright: Copyright (c) 2018
    *Created on 2018-11-08
    *Author: 十甫
    *Version 1.0 
    *Title: Manacher
    *Time: inf mins
    */
    #include<iostream>
    #include<cmath>
    #include<cstring>
    #include<cstdio>
    const int maxn = 51000100;
    using namespace std;
    
    int n, pal[maxn], ans;
    char origin[maxn], data[maxn<<1];
    void manacher() {
        int maxright = 0, mid = 0;
        for(int i = 1;i < n;i++) {
            if(i < maxright) {
                pal[i] = min(pal[(mid << 1) - i], pal[mid] + mid - i);
            } else {
                pal[i] = 1;
            }
            for(;data[i + pal[i]] == data[i - pal[i]];++pal[i]);
            if(pal[i] + i > maxright) {
                maxright = pal[i] + i;
                mid = i;
            }
        }
    }
    void turn() {
        data[0] = data[1] = 11;
        for(int i = 0;i < n;i++) {
            data[i * 2 + 2] = origin[i];
            data[i * 2 + 3] = 11;
        }
        n = n * 2 + 2;
        data[n] = 0;
    }
    int main() {
        scanf("%s", origin);
        n = strlen(origin);
        turn();
        manacher();
        ans = 1;
        for(int i = 0;i < n;i++) {
            ans = max(ans, pal[i]);
        }
        printf("%d
    ", ans - 1);
        return 0; 
    }
    NOIP 2018 RP++
  • 相关阅读:
    django 自定义用户身份验证
    登录验证算法
    Scrapy
    爬虫性能相关
    Beautifulsoup模块
    selenium模块
    Cookie&Session
    Django Admin 本质
    JavaScript自执行函数和jquery扩展方法
    JS作用域与词法分析
  • 原文地址:https://www.cnblogs.com/Black-S/p/9930698.html
Copyright © 2011-2022 走看看