zoukankan      html  css  js  c++  java
  • 杂项(最小表示法):HZOI 2015 Glass Beads

    【题目描述】

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

    【输入格式】

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

    【输出格式】

    串的最小表示。

    【样例输入】


    10

    helloworld


    【样例输出】

    dhelloworl

    【题目来源】

    HZOI2015 改编自poj1509

      算法很显然,需要注意的是:s[len+1]要赋值成一个较大值。

     1 #include <iostream>
     2 #include <cstring>
     3 #include <cstdio>
     4 using namespace std;
     5 const int maxn=300010;
     6 char s[maxn];int len;
     7 int main(){
     8     freopen("MinRepresentations.in","r",stdin);
     9     freopen("MinRepresentations.out","w",stdout);
    10     scanf("%d%s",&len,s+1);
    11     int p1=1,p2=2,k;s[len+1]='z'+1;
    12     while(p1<=len&&p2<=len){k=0;
    13         while(s[p1+k]==s[p2+k])++k;
    14         if(s[p1+k]<s[p2+k]){
    15             p2=p2+k+1;
    16             p2+=p1==p2;
    17         }
    18         else{
    19             p1=p1+k+1;
    20             p1+=p1==p2;
    21         }
    22     }
    23     p1=p1<=len?p1:p2;
    24     for(int i=p1;i<=len;i++)
    25         putchar(s[i]);
    26     for(int i=1;i<p1;i++)
    27         putchar(s[i]);
    28     printf("
    ");        
    29     return 0;
    30 }
  • 相关阅读:
    迟滞电压比较器
    单调谐小信号放大器
    汇编指令
    渗透测试之信息收集
    DVWA——文件包含
    DVWA——文件上传
    文件上传漏洞与利用
    在Metasploit中使用PostgreSQL
    软件安装方法
    XML外部实体(XXE)
  • 原文地址:https://www.cnblogs.com/TenderRun/p/5801473.html
Copyright © 2011-2022 走看看