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