最小标示法:给定一个字符串,不断将其最后一个字符放到开头,最终会得到n个字符串,称这n个字符串循环同构,这些字符串中字典序最小的一个,就是最小表示法

#include<iostream>
#include<cstring>
#include<cstdio>
using namespace std;
#define maxn 1000005int len;
int main(){int t;cin>>t;while(t--){char s[maxn<<1]={};cin>>(s+1);len=strlen(s+1);for(int i=1;i<=len;i++)s[len+i]=s[i];int j=2,i=1;while(i<=len && j<=len){int k=0;while(s[i+k]==s[j+k] && k<len)k++;if(s[i+k]>s[j+k])i=i+k+1;else j=j+k+1;if(i==j)j++;}cout<<min(i,j)<<'\n';}
}

下面是进阶指南的模板

int n=strlen(s+1);
for(int i=1;i<=n;i++)s[n+i]=s[i];
int i=1,j=2,k;
while(i<=n && j<=n){for(k=0;k<=n;&&s[i+k]==s[j+k];k++);if(k==n)break;if(s[i+k]>s[j+k])i=i+k+1;else j=j+k+1;if(i==j)j++;
}
ans=min(i,j);

转载于:https://www.cnblogs.com/zsben991126/p/10471669.html

最小标示法模板 poj1509相关推荐

  1. 字符串的最大最小表示法 模板

    #include<iostream> #include<string> using namespace std; /* 用最小表示法求字符串S的最小字典序 返回字典序最小的串的 ...

  2. 『最小表示法 Necklace』

    最小表示法 这是一个简单的字符串算法,其解决的问题如下: 给定一个字符串\(S\),长度为\(n\),如果把它的最后一个字符不断放到最前面,会得到\(n\)个不同的字符串,那么我们称这\(n\)个字符 ...

  3. BZOJ2176Strange string——最小表示法

    题目描述 给定一个字符串S = {S1, S2, S3 - Sn}, 如果在串SS中, 子串T(|T| = n)为所有长度为n的SS的字串中最小的(字符串的比较), 则称T为"奇怪的字串&q ...

  4. 树的同构模板题(法1.最小表示法+法2.树哈希)

    树的同构 problem solution code solution code problem 模板题 solution Ⅰ. 最小表示法 将树转化为 0/10/10/1 括号序列:从根开始 dfs ...

  5. poj1509最小表示法

    题意:       给你一个循环串,然后找到一个位置,使得从这个位置开始的整个串字典序最小. 思路:       最小表示法的建档应用,最小表示法很好理解,就点贪心的意思,一开始我们枚举两个起点i,j ...

  6. UVA - 1314 Hidden Password(最小表示法)

    题目链接:点击查看 题目大意:给出一个字符串,求其最小表示法所代表的下标 题目分析:最小表示法的模板题,因为N给到了1e5,如果是正常的求最小值的话,时间复杂度是n*lens级别的,但最小表示法可以利 ...

  7. HDU - 3374 String Problem(最小表示法+最大表示法+KMP的next数组)

    题目链接:点击查看 题目大意:给出一个字符串,现在问字符串不断向左循环所能形成的n个字符串中,字典序最小和最大的字符串的编号为多少,分别有多少个 题目分析:字符串最小表示法的模板题,证明和模板都是看大 ...

  8. 几个冷门字符串算法的学习笔记(最小表示法,exKMP,Lyndon Word)

    所有下标均从1开始 最小表示法 给定一个串,求字典序最小的循环同构. 我们把串复制一遍接在后面,然后求出[1,N][1,N][1,N]开始的长为NNN的子串中最小的 先设i=1,j=2i=1,j=2i ...

  9. bzoj 1398: 寻找主人 AC自动机+最小表示法

    题目大意: 给定两个序列判断是否循环同构,若循环同构则输出最小表示 题解: 因为没有样例输入输出,一开始没看到要求输出最小表示 Wa一大页. 但不得不说bzoj还是挺高效的: 赞一个 XD.jpg 判 ...

  10. 字符串循环同构的最小表示法(转)

    循环字符串的最小表示法的问题可以这样描述: 对于一个字符串S,求S的循环的同构字符串S'中字典序最小的一个. 由于语言能力有限,还是用实际例子来解释比较容易: 设S=bcad,且S'是S的循环同构的串 ...

最新文章

  1. hdu 1166 敌兵布阵(树状数组)
  2. vb.net机房收费系统重构——存储过程的使用
  3. Solr 查询时候关键期 编码问题
  4. python 列表比较不同物质的吸热能力_飘着雪花的冬天
  5. iOS-语法syntax
  6. java垃圾回收机制算法分析
  7. PTA-6-1 数组循环右移 (20分)(C语言)
  8. 网站前端开发基础知识学什么?必备技能
  9. kotlin运行_Kotlin允许,运行,也适用于
  10. 末日帝国——Agile公司的困境 (5)
  11. 软件开发工作过程中的一些总结
  12. 前端常用PS技巧总结之将图片上的LOGO(水印)去掉
  13. Pytorch中torch.nn.DataParallel负载均衡问题
  14. 文档多级列表_如何在Google文档中创建多级列表
  15. 爬取Google Play中app的用户评论(1)
  16. Unreal Engine 4 渲染目标(Render Target)教程 之 可交互的草地(上)
  17. 万物互联大时代,物联网的基础技术有哪些?
  18. 光环国际20周年庆六城联动峰会「北京场」圆满结束!
  19. html圣诞快乐英文,圣诞快乐英语,圣诞快乐英语简写?
  20. JsonFormat使用经历

热门文章

  1. 我一个普通程序员,光靠GitHub打赏就年入70万,其实你也可以
  2. 程序员的世界有 10 种人,你是哪一种?
  3. 推荐几个非常有用的工具
  4. onSaveInstanceState onRestoreInstanceState
  5. 从零开始--系统深入学习android(实践-让我们开始写代码-Android框架学习-2. 输入控件)...
  6. 机器学习常用库速查表 文献收藏
  7. jquery知识点总结(转载)
  8. MYSQL file types redo log
  9. Swift中字典解析后的问题,!?两种拆包的差别
  10. 零值初始化字符串常数作为函数模板参数