传送门 解题思路 最小表示法.首先对于判断是不是循环同构的串,直接扫一遍用哈希判即可.然后要输出字典序最小的就要用到最小表示法,首先可以把串复制一遍,这样的话就可以把串变成静态操作.如果对于两个位置\(i,j\),若他们\(i\sim i+k-1\)与\(j\sim j+k-1\)这些位置都两两相等,而\(s[i+k]<s[j+k]\)的话.那么首先可以知道的是\(j\)这个位置一定不是最小表示的开头,还有一个性质就是\(j\sim j+k\)这些位置也一定不是,因为\(s[i+k]<s[j+…
题目链接:https://www.lydsy.com/JudgeOnline/problem.php?id=1398 题目: Description 给定两个项链的表示,判断他们是否可能是一条项链. Input 输入文件只有两行,每行一个由0至9组成的字符串,描述一个项链的表示(保证项链的长度是相等的). Output 如果两条项链不可能同构,那么输出’No’,否则的话,第一行输出一个’Yes’ 第二行输出该项链的字典序最小的表示. 设L = 项链长度,L <= 1000000. Sample…
1398: Vijos1382寻找主人 Necklace Time Limit: 5 Sec  Memory Limit: 128 MBSubmit: 308  Solved: 129 Description 给定两个项链的表示,判断他们是否可能是一条项链. Input 输入文件只有两行,每行一个由0至9组成的字符串,描述一个项链的表示(保证项链的长度是相等的). Output 如果两条项链不可能同构,那么输出’No’,否则的话,第一行输出一个’Yes’ 第二行输出该项链的字典序最小的表示. 设…
题目描述 给定两个项链的表示,判断他们是否可能是一条项链. 输入 输入文件只有两行,每行一个由0至9组成的字符串,描述一个项链的表示(保证项链的长度是相等的). 输出 如果两条项链不可能同构,那么输出’No’,否则的话,第一行输出一个’Yes’ 第二行输出该项链的字典序最小的表示. 设L = 项链长度,L <= 1000000. 样例输入 2234342423 2423223434 样例输出 Yes 2234342423   判断两个字符串是否循环同构只要将两个字符串的最小循环同构串找到判断是否…
Description 给定两个项链的表示,判断他们是否可能是一条项链. Input 输入文件只有两行,每行一个由0至9组成的字符串,描述一个项链的表示(保证项链的长度是相等的). Output 如果两条项链不可能同构,那么输出’No’,否则的话,第一行输出一个’Yes’ 第二行输出该项链的字典序最小的表示. 设L = 项链长度,L <= 1000000. Sample Input 22343424232423223434 Sample Output Yes2234342423 Solution…
把最小表示法的坑填了 Description 给定两个项链的表示,判断他们是否可能是一条项链. Input 输入文件只有两行,每行一个由0至9组成的字符串,描述一个项链的表示(保证项链的长度是相等的). Output 如果两条项链不可能同构,那么输出’No’,否则的话,第一行输出一个’Yes’ 第二行输出该项链的字典序最小的表示. 设L = 项链长度,L <= 1000000. Sample Input 2234342423 2423223434 Sample Output Yes 223434…
*题目描述: 给定两个项链的表示,判断他们是否可能是一条项链. *输入: 输入文件只有两行,每行一个由0至9组成的字符串,描述一个项链的表示(保证项链的长度是相等的). *输出: 如果两条项链不可能同构,那么输出’No’,否则的话,第一行输出一个’Yes’,第二行输出该项链的字典序最小的表示. 设L = 项链长度, 对于50%的数据L <= 100000: 对于100%的数据L <= 1000000. *样例输入: *样例输出: *提示: *来源: *题解: 最小表示法果题. *代码: #in…
题目大意: 给出两个串(长度<=1e6),问是否同构,如果同构输出最小表示. 题解: 这是最小表示法模板题.在这里好好讲一下最小表示法. 首先有一个最暴力的方法:把所有表示搞出来排序. 时间复杂度O(n^2logn); 然后可以发现,比较两个字符串时都是从第一位向后比. 伪代码: ]; int mex() { scanf(); ); ;i<=len;i++) s[i+len]=s[i]; ,j=,k=; while(i<=len&&j<=len&&k…
题意: 给出两个同样长度的数字串: 求两个串是否本质同样.同样则输出最小表示. 长度L似乎给的不正确,大概是2000000左右吧: 题解: 最小表示法裸题.证明正确性啥的详见论文吧: 这东西大体的思路就是两个指针扫. 同样则累加k,不同就向后跳k+1个. 由于前面那段同样所以就能够由还有一个指针去扫,来节约时间. O(n)这个非常显然咯.就一个for循环(笑). 而且每一个数都在+++不像kmp还会由next数组回退. 模板别敲错,更别忘了.. 代码: #include<stdio.h> #i…
题目大意: 给定两个序列判断是否循环同构,若循环同构则输出最小表示 题解: 因为没有样例输入输出,一开始没看到要求输出最小表示 Wa一大页. 但不得不说bzoj还是挺高效的: 赞一个 XD.jpg 判断是否循环同构用kmp即可,可惜本人并不会kmp,用的AC自动机. 然后去学了一发求最小表示法方法...这...貌似是模板题.. #include <cstdio> #include <cstring> #include <algorithm> using namespac…