BZOJ 2176 Strange string 最小表示法
题目大意:给定一个串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;
}
BZOJ 2176 Strange string 最小表示法的更多相关文章
- BZOJ 2176 Strange string ——最小表示法
本来想用来练习后缀自动机的,但是100w有点虚(事实证明确实T掉了). 只好上最小表示法. #include <cstdio> #include <cstring> #incl ...
- BZOJ 2176 Strange String (最小表示法)
题目大意: 与别的裸题的唯一不同点是其符号的ASCII码值在3 ~ 254 之间. 算法讨论: 最小表示法直接上.但是唯一不同的就是注意这里的字符范围,用char是会get wa的,所以要用unsig ...
- bzoj2740 串 && bzoj2176 strange string(最小表示法模板)
https://konnyakuxzy.github.io/BZPRO/JudgeOnline/2740.html 题解讲的很清楚了 (好像等于的情况应该归入case2而不是case1?并不确定) 具 ...
- BZOJ2176Strange string——最小表示法
题目描述 给定一个字符串S = {S1, S2, S3 … Sn}, 如果在串SS中, 子串T(|T| = n)为所有长度为n的SS的字串中最小的(字符串的比较), 则称T为”奇怪的字串”. 你的任务 ...
- bzoj 2176 最小表示
2176: Strange string Time Limit: 10 Sec Memory Limit: 259 MBSubmit: 419 Solved: 174[Submit][Status ...
- bzoj2176 Strange string(字符串最小表示法)
Time Limit: 10 Sec Memory Limit: 259 MB 给定一个字符串S = {S1, S2, S3 … Sn}, 如果在串SS中, 子串T(|T| = n)为所有长度为n的 ...
- hdu String Problem(最小表示法入门题)
hdu 3374 String Problem 最小表示法 view code#include <iostream> #include <cstdio> #include &l ...
- HDOJ3374 String Problem 【KMP】+【最小表示法】
String Problem Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) T ...
- hdu 3374 String Problem(kmp+最小表示法)
Problem Description Give you a string with length N, you can generate N strings by left shifts. For ...
随机推荐
- Ext分区文件恢复工具extundelete
Ext分区文件恢复工具extundelete Ext是延伸文件系统(Extended system)的缩写.它是为Linux内核开发的第一个文件系统.它有多个版本.现在常见的是Ext3和Ext4.由 ...
- matlab与C++以.mat文件方式进行数据相互流动
年前,放假回家之前,使用了C++与matlab之间的数据的互动的一个实验,感觉效果挺好.初步达到了目的,所以整理下来方便大家使用.减少大家编程学习的时间.希望对你们有用. #include " ...
- java的几个特性
前言 本文主要介绍java语言的三个特性:类型协变和逆变,动态代理和静态代理,注解. 协变和逆变 借用Treant的博文,逆变与协变用来描述类型转换(type transformation)后的继承关 ...
- java内存溢出分析工具:jmap使用实战
在一次解决系统tomcat老是内存撑到头,然后崩溃的问题时,使用到了jmap. 1 使用命令 在环境是linux+jdk1.5以上,这个工具是自带的,路径在JDK_HOME/bin/下 jmap -h ...
- ES6方面重点摘要
1.变量声明(1)内层变量覆盖外层变量(即后面的覆盖前面的)(2)循环变量的声明,i值在全局范围内有效,所以最后输出的都是最后一轮i的值(3)let.const的引入,为JS增加了块级作用域的概念(c ...
- .NET MVC执行过程 及 生命周期步骤
1.网址路由比对 2.执行Controller与Action 3.执行View并返回结果 Request 请求到来 IIS 根据请求特征将处理权移交给 ASP.NET UrlRoutingModule ...
- 搭建Drupal-8.5.3
环境说明 系统版本 CentOS 6.9 x86_64 软件版本 yum安装nginx 1.10.2 yum安装php 7.2.6(当前的最新版本) yum安装mysql 5.5.60 d ...
- 转:Eclipse常见问题,快捷键收集
Eclipse的编辑功能非常强大,掌握了Eclipse快捷键功能,能够大大提高开发效率.Eclipse中有如下一些和编辑相关的快捷键. 1.[ALT+/] Sysout+ System.out.pri ...
- Hadoop之——分布式集群安装过程简化版
转载请注明出处:http://blog.csdn.net/l1028386804/article/details/46352315 1.hadoop的分布式安装过程 1.1 分布结构 主节点(1个,是 ...
- 全双工音频播放器在c#中使用waveIn / waveOut api
http://www.codeproject.com/Articles/4889/A-full-duplex-audio-player-in-C-using-the-waveIn-w 一篇关于低级音频 ...