String Problem

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 1492    Accepted Submission(s): 662

Problem Description
Give you a string with length N, you can generate N strings by left shifts. For example let consider the string “SKYLONG”, we can generate seven strings:
String Rank 
SKYLONG 1
KYLONGS 2
YLONGSK 3
LONGSKY 4
ONGSKYL 5
NGSKYLO 6
GSKYLON 7
and lexicographically first of them is GSKYLON, lexicographically last is YLONGSK, both of them appear only once.
  Your task is easy, calculate the lexicographically fisrt string’s Rank (if there are multiple answers, choose the smallest one), its times, lexicographically last string’s Rank (if there are multiple answers, choose the smallest one), and its times also.
 
Input
  Each line contains one line the string S with length N (N <= 1000000) formed by lower case letters.
 
Output
Output four integers separated by one space, lexicographically fisrt string’s Rank (if there are multiple answers, choose the smallest one), the string’s times in the N generated strings, lexicographically last string’s Rank (if there are multiple answers, choose the smallest one), and its times also.
 
Sample Input
abcder
aaaaaa
ababab
 
Sample Output
1 1 6 1
1 6 1 6
1 3 2 3
 
 #include <iostream>
#include <stdio.h>
#include <algorithm>
#include <string.h>
#include <set>
using namespace std;
char s[];
int next[];
int get(char s[],int flag,int l)
{
int i,j,k,t;
i=k=;
j=;
while(i<l&&j<l&&k<l)
{
t=s[(i+k>=l?i+k-l:i+k)]-s[(j+k>=l?j+k-l:j+k)];
if(!t)k++;
else
{
if(!flag)
{
if(t>)i+=k+;
else j+=k+;
}
else
{
if(t<)i+=k+;
else j+=k+;
}
if(i==j)j++;
k=;
}
}
return i;
}
void getsnext(char s[],int l)
{
int i=,j=;
next[]=;
while(i<l)
{
if(j==||s[i]==s[j])
{
i++,j++;
next[i]=j;
}
else j=next[j];
}
next[l-]++;
}
int main()
{
while(~scanf("%s",s))
{
int l=strlen(s);
int minaa=get(s,,l);
int maxaa=get(s,,l);
getsnext(s,l);
cout<<minaa+<<" "<<((l%(l-next[l-]))?:l/(l-next[l-]));
cout<<" "<<maxaa+<<" ";
cout<<((l%(l-next[l-]))?:l/(l-next[l-]))<<endl;
}
}
 
 

最新文章

  1. lr文件下载脚本(文件参数化重命名)
  2. Visual Studio Code 智能提示文件
  3. 将C#文档注释生成.chm帮助文档
  4. Codeforces Round #389 (Div. 2, Rated, Based on Technocup 2017 - Elimination Round 3) E. Santa Claus and Tangerines
  5. DirectShow开发快速入门之慨述
  6. 嘿嘿,JAVA里第一次运行单元测试成功,立存
  7. thinkphp+mysql+bootstrap
  8. VS2015使用OSChina的git功能
  9. if(!!attr)是什么鬼???
  10. 1.iOS第一个简单APP
  11. easyui struts后台实现tree返回json数据
  12. OpenLDAP安装与配置
  13. MAC的VIMRC
  14. 关于我的PP0.1聊天软件(客户端)
  15. 【锋利的jQuery】中全局事件ajaxStart、ajaxStop不执行
  16. Robotframework-Appium系列:登录操作
  17. Linux下php+imagemagick支持webp格式的图片
  18. struts2国际化全例 错误解决
  19. Go断言
  20. Codeforces Round #517 体验记

热门文章

  1. [2015-10-11]tfs2015 vs2013 配置持续集成
  2. UI设计基础知识和JavaScript
  3. C语言中无符号数和有符号数之间的运算
  4. css编写注意事项(不定时更新)
  5. 英语app分析
  6. 团队作业4——第一次项目冲刺 FiFtH DaY
  7. 在配置github中遇到的一些问题
  8. Swing-setBounds()用法-入门
  9. 201521123045 《Java程序设计》第8周学习总结
  10. 201521123088《Java程序设计》第6周学习总结