zoukankan      html  css  js  c++  java
  • HDU 3374

    #include <cstdio>
    #include <cstring>
    #include <algorithm>
    #include <iostream>
    using namespace std;
    #define MAXN 1000017
    int Next[MAXN];
    char str[MAXN];
    int k;
    void getNext( char T[],int len)
    {
        int i = 0, j = -1;
        Next[0] = -1;
        while(i < len)
        {
            if(j == -1 || T[i] == T[j])
            {
                i++,j++;
                Next[i] = j;
            }
            else
                j = Next[j];
        }
    }
    //最小表示法
    int get_minstring(char *s)
    {
        int len = strlen(s);
        int i = 0, j = 1, k = 0;
        while(i<len && j<len && k<len)
        {
            int t=s[(i+k)%len]-s[(j+k)%len];
            if(t==0)
                k++;
            else
            {
                if(t > 0)
                    i+=k+1;
                else
                    j+=k+1;
                if(i==j) j++;
                k=0;
            }
        }
        return min(i,j);
    }
     
    //最大表示法
    int get_maxstring(char *s)
    {
        int len = strlen(s);
        int i = 0, j = 1, k = 0;
        while(i<len && j<len && k<len)
        {
            int t=s[(i+k)%len]-s[(j+k)%len];
            if(t==0)
                k++;
            else
            {
                if(t > 0)
                    j+=k+1;
                else
                    i+=k+1;
                if(i==j) j++;
                k=0;
            }
        }
        return min(i,j);
    }
    int main()
    {
        while(scanf("%s",str)!=EOF)
        {
            int len = strlen(str);
            getNext(str,len);
            int tt = len - Next[len];
            int num = 1;
            if(len%tt == 0)
            {
                num = len/tt;
            }
            int posmin = get_minstring(str);
            int posmax = get_maxstring(str); 
            printf("%d %d %d %d
    ",posmin+1,num,posmax+1,num);
        }
        return 0;
    }
    
  • 相关阅读:
    自我介绍
    constructor
    arrow function、function.apply
    for each...in
    类与对象与结构体的区别
    编程语言的发展史
    正则表达式中pw、IDCard和EM匹配
    正则表达式速记
    js中用户名的正则(字符,数字,下划线,减号)
    DOM与document的区别
  • 原文地址:https://www.cnblogs.com/tianming1/p/11514696.html
Copyright © 2011-2022 走看看