题目大意:给定一个串S,求最小表示法

n<=1000W,实在不敢写后缀自己主动机,就去学了最小表示法= =

记得用unsigned char不然WA= = 数据真是逗- -

#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
#define M 10001000
using namespace std;
int n;
unsigned char s[M];
int Min_Representation()
{
int i,j,k;
for(i=1,j=2,k=0;i<=n&&j<=n&&k<=n;)
{
int t=s[i+k>n?i+k-n:i+k]-s[j+k>n?j+k-n:j+k];
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()
{
scanf("%d\n",&n);
fread(s+1,1,n,stdin);
int ans=Min_Representation();
if(ans==1)
fwrite(s+1,1,n,stdout);
else
fwrite(s+ans,1,n-ans+1,stdout),fwrite(s+1,1,ans-1,stdout);
cout<<endl;
return 0;
}

最新文章

  1. 二十四点算法 java实现
  2. 11.C#迭代器(六章6.1)
  3. leetcode 140. Word Break II ----- java
  4. Linux删除用户
  5. MFC弹出模拟对话框
  6. C++之单元测试
  7. 在VS工程中,添加c/c++工程中外部头文件及库
  8. MySQL慢查询日志分析
  9. 什么是IPFS?(一)
  10. [再寄小读者之数学篇](2014-09-22 distributions and square integrable functions)
  11. C#学习-接口
  12. EasyUIDataGrid去掉垂直滚动条
  13. Mysterious Bacteria LightOJ - 1220
  14. 尚硅谷springboot学习22-Thymeleaf入门
  15. 31-java中知识总结:list, set, map, stack, queue
  16. Hadoop部署方式-伪分布式(Pseudo-Distributed Mode)
  17. 监控事件日志关键字规则(EventDescription)
  18. C# 面试题 (二)
  19. [置顶] Android Shape一些新玩法?
  20. vue使用v-for循环,动态修改element-ui的el-switch

热门文章

  1. [POI2015]Kinoman
  2. 2.2多线程(java学习笔记)线程状态及线程操作的相关方法
  3. Python学习笔记——模块
  4. DEV MarqueeProgressBarControl控件
  5. thinkphp中JS文件不能写__ROOT__变量
  6. 在vs2012中配置使用iisexpress
  7. OpenGL矩阵类(C++) 【转】
  8. INTZ DX format
  9. CentOS 7.2通过yum安装zabbix
  10. 人工智能真NB?何不去炒股?