Problem description
  小明是个非常优秀的同学。他除了特别公正外,他也非常细心,当然老师肯定也知道,这不,老师又有事情找他帮忙了。老师每周都会给他一个字符串A。然后问小明“A字符串的循环移位产生的全部字符串中,字典序最小的是哪个”。于是小明屁颠屁颠的一个一个比对,可是长久下来,小明实在是受不了了,所以他想请你帮帮他。

相同,你帮他解决。你就会多AC一个题目。 

Hint:

假设A字符串为bcda,那么其全部的循环移位的新字符串有cdab。dabc,abcd。和他自己bcda一共四个,然后在这四个中。字典序最小的为abcd,那么输出这个字符串中的第一次字符在原字符串中的位置。为3,假设有多个结果,输出数字最小的。 

Input
  输入有T组, 以后每组第一行有一个字符串S。长度<=5000000,都是小写字母。
Output
  对于每个case。输出结果。
Sample Input
4
bcda
aaa
a
adab
Sample Output
3
0
0
2
Problem Source

HUNNU Contest

//i,j一開始指向第一和第二个字符,k代表i,j開始的字符串最长匹配的长度

比如 abcdabbcabdc

第一个a位置为0,第二个a位置为4。第三个位置为8

如果i=0,j=4的时候(这里我们仅仅是如果的一个中间过程)

l相应字符相等,k=1

那么i+k,j+k就是第二个位置,也相等。k=2,匹配长度为2

可是第三个 s[i+k]>s[j+k]

那么两者比較的字典序最小的是j所指的位置,j要保留。i肯定不是字典序最小的,所以i直接偏移到i+k的后面去

反之亦然

最后我们找i,j最小的就可以

#include <iostream>
#include <stdio.h>
#include <string.h>
#include <stack>
#include <queue>
#include <map>
#include <set>
#include <vector>
#include <math.h>
#include <bitset>
#include <algorithm>
#include <climits>
#include <time.h>
using namespace std; #define LS 2*i
#define RS 2*i+1
#define UP(i,x,y) for(i=x;i<=y;i++)
#define DOWN(i,x,y) for(i=x;i>=y;i--)
#define MEM(a,x) memset(a,x,sizeof(a))
#define W(a) while(a)
#define gcd(a,b) __gcd(a,b)
#define LL long long
#define N 100000
#define MOD 1000000007
#define INF 0x3f3f3f3f
#define EXP 1e-8 char str[5000005]; int main()
{
int i,j,k,len,minn,t;
scanf("%d",&t);
while(t--)
{
scanf("%s",str);
len = strlen(str);
i = 0,j = 1,k = 0;
while(i<len&&j<len&&k<len)
{
int t = str[(i+k)%len]-str[(j+k)%len];//取模解决循环移位
if(t==0) k++;//相等,匹配长度+1
else
{
if(t>0)
i+=k+1;//此时s[i+k]>s[j+k]。i相应的位置肯定不是最大的串,直接移动到匹配子串末尾
else
j+=k+1;
if(i == j)//指向同一个位置,j偏移
j++;
k = 0;//匹配长度从0開始
}
}
printf("%d\n",min(i,j));
} return 0;
}

hunnu11544:小明的烦恼——找字符串的更多相关文章

  1. hunnu 小明的烦恼——找字符串

    http://acm.hunnu.edu.cn/online/?action=problem&type=show&id=11544&courseid=0 小明的烦恼——找字符串 ...

  2. hnuun 11544 小明的烦恼——找字符串(求环形字符串的最小最大字典序)

    http://acm.hunnu.edu.cn/online/?action=problem&type=show&id=11544&courseid=0 最小最大表示法: 求环 ...

  3. hunnu 11545小明的烦恼——找路径 (最大流)

    小明的烦恼--找路径  Time Limit: 2000ms, Special Time Limit:5000ms, Memory Limit:32768KB Total submit users: ...

  4. hunnu - 11545 小明的烦恼——找路径 (最大流)

    http://acm.hunnu.edu.cn/online/?action=problem&type=show&id=11545 只是要求不经过相同的边,那么每次找出一条增广路T-- ...

  5. hunnu--11545--小明的烦恼——找路径

    小明的烦恼--找路径  Time Limit: 2000ms, Special Time Limit:5000ms, Memory Limit:32768KB Total submit users:  ...

  6. 【BZOJ】2760: [JLOI2011]小A的烦恼【字符串模拟】

    2760: [JLOI2011]小A的烦恼 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 406  Solved: 258[Submit][Statu ...

  7. 擅长排列的小明 II(找规律)

    擅长排列的小明 II 时间限制:1000 ms  |  内存限制:65535 KB 难度:3 描述 小明十分聪明,而且十分擅长排列计算. 有一天小明心血来潮想考考你,他给了你一个正整数n,序列1,2, ...

  8. hunnu11543:小明的烦恼——分糖果

    Problem description   小明在班里一直是个非常公正的孩子.这点同学和老师都非常清楚,这不,老师每周都会从家里带来一些糖果.然后叫小明把糖果分给其它小朋友,但这个班里的同学都有一个非 ...

  9. 【贪心+堆】XMU 1584 小明的烦恼

    题目链接: http://acm.xmu.edu.cn/JudgeOnline/problem.php?id=1584 题目大意: 给n(n<=100 000)个任务的耗时和截至时间,问最少不能 ...

随机推荐

  1. 树莓派 rtl8188eu 芯片wifi驱动

    总算是找到了.现拿出来分享.參考地址:https://www.raspberrypi.org/forums/viewtopic.php? p=462982#p462982 下载的地址是:https:/ ...

  2. UML中的序列图(时序图)

    序列图将交互关系表示为一个二维图.纵向是时间轴,时间沿竖线向下延伸. 横向轴代表了在协作中各独立对象的类元角色.类元角色用生命线表示.当对象存在时,角色用一条虚线表示,当对象的过程处于激活状态时.生命 ...

  3. @Autowired 凝视遇到的问题,@Qualifier 帮助解决这个问题

    当候选 Bean 数目不为 1 时的应对方法 在默认情况下使用 @Autowired 凝视进行自己主动注入时,Spring 容器中匹配的候选 Bean 数目必须有且仅有一个. 当找不到一个匹配的 Be ...

  4. 2016.02.23,英语,《Vocabulary Builder》Unit 01

    Bell:来源于拉丁语,含义为war.fight,其中Bellona [bә'lәunә]是罗马女战神的名字,她的丈夫是战神Mars.antebellum: [ˌænti'beləm] adj. 战前 ...

  5. Vmware 安装samba之二

    安装samba:sudo apt-get install samba 安装smbclient:sudo apt-get install 安装smbfs:sudo apt-get smbfs 2.修改配 ...

  6. Selenium启动不同浏览器

    1.启动Chrome "webdriver.chrome.driver" System.setProperty("webdriver.chrome.driver" ...

  7. 关于Android对话框简单实用方法总结

    要显示一个对话框,首先需要在xx.xml下添加一个Button按钮,并添加一个对应id. 单次点击事件对话框: button.setOnClickListener(new View.OnClickLi ...

  8. pixhawk入门知识

    Pixhawk是一种先进的自动驾驶仪,由PX4开放硬件项目设计和3D机器人制造.它具有来自ST公司先进的处理器和传感器技术,以及NuttX实时操作系统,能够实现惊人的性能,灵活性和可靠性控制任何自主飞 ...

  9. WebApi笔记

    WebApi有一段时间没用了,这几天用webapi做了一个接口供第三方调用,又重新折腾了下,做个笔记记录下心得,防止遗忘. 1.webapi使用的RESTful风格的传参方式,其实就是充分利用HTTP ...

  10. GCC中的强符号和弱符号及强引用和弱引用

    1. 强符号和弱符号 1.1 u-boot和kernel中的__weak指令 u-boot和kernel比较普遍地使用了__weak来定义函数. 在include\linux\compiler-gcc ...