cogs 2123. [HZOI 2015] Glass Beads

Posted Soda

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了cogs 2123. [HZOI 2015] Glass Beads相关的知识,希望对你有一定的参考价值。

2123. [HZOI 2015] Glass Beads

★★★   输入文件:MinRepresentations.in   输出文件:MinRepresentations.out   简单对比
时间限制:1 s   内存限制:1024 MB

【题目描述】

给定长度为n(n<=300000)的循环同构的字符串,定义最小表示为该字符串的字典序最小的同构表示,请输出这个表示。

【输入格式】

第一行是串的长度,第二行是字符串。

【输出格式】

串的最小表示。

【样例输入】

 

10

helloworld

 

【样例输出】

dhelloworl

【题目来源】

HZOI2015 改编自poj1509

#include<iostream>
#include<cstdio>
#include<cstring>
#define maxn 300010
using namespace std;
int n;
char s[maxn];
int getmn(){
    int i=0,j=1,k=0;
    while(i<n&&j<n&&k<n){
        int t=s[(i+k)%n]-s[(j+k)%n];
        if(!t)k++;
        else{
            if(t>0)i+=k+1;
            else j+=k+1;
            if(i==j)j++;
            k=0;
        }
    }
    return min(i,j);
}
int main(){
    freopen("MinRepresentations.in","r",stdin);freopen("MinRepresentations.out","w",stdout);
    scanf("%d%s",&n,s);
    int ans=getmn();
    for(int i=1,j=ans;i<=n;i++,j++){
        printf("%c",s[j%n]);
    }
    return 0;
}

 

以上是关于cogs 2123. [HZOI 2015] Glass Beads的主要内容,如果未能解决你的问题,请参考以下文章

cogs 2320. [HZOI 2015]聪聪的世界题解

COGS 2188. [HZOI 2015] Math 题解

[COGS 2258][HZOI 2015]复仇的序幕曲

COGS2287 [HZOI 2015]疯狂的机器人

COGS2479 HZOI2016—偏序

cogs 2632. [HZOI 2016] 数列操作d