BZOJ1398: Vijos1382寻找主人 Necklace 字符串最小表示法
Description
给定两个项链的表示,判断他们是否可能是一条项链。
Input
输入文件只有两行,每行一个由0至9组成的字符串,描述一个项链的表示(保证项链的长度是相等的)。
Output
Sample Input
2423223434
Sample Output
2234342423
Solution
最小表示法板子题...随便跑一跑就行
#include <bits/stdc++.h>using namespace std ;#define N 2000100 #define inf 0x3f3f3f3fchar s1[ N ] , s2[ N ] ; int cur1 , cur2 ;int main() {scanf( "%s%s" , s1 + 1 , s2 + 1 ) ;int n = strlen( s1 + 1 ) ;for( int i = 1 ; i <= n ; i ++ ) {s1[ i + n ] = s1[ i ] ;s2[ i + n ] = s2[ i ] ;}int i = 1 , j = 2 , k ;while( i <= n && j <= n ) {for( k = 0 ; k <= n && s1[ i + k ] == s1[ j + k ] ; k ++ ) ;if( k == n ) break ;if( s1[ i + k ] > s1[ j + k ] ) {i = i + k + 1 ;if( i == j ) i ++ ;} else {j = j + k + 1 ;if( i == j ) j ++ ;}}cur1 = min( i , j ) ;i = 1 , j = 2 , k = 0 ;while( i <= n && j <= n ) {for( k = 0 ; k <= n && s2[ i + k ] == s2[ j + k ] ; k ++ ) ;if( k == n ) break ;if( s2[ i + k ] > s2[ j + k ] ) {i = i + k + 1 ;if( i == j ) i ++ ;} else {j = j + k + 1 ;if( i == j ) j ++ ;}}cur2 = min( i , j ) ;for( int c = 0 ; c < n ; c ++ ) {if( s1[ cur1 + c ] != s2[ cur2 + c ] ) return puts( "No" ) , 0 ;}puts( "Yes" ) ;for( int c = cur1 ; c <= cur1 + n - 1 ; c ++ ) {putchar( s1[ c ] ) ;}puts("");return 0 ; }
转载于:https://www.cnblogs.com/henry-1202/p/BZOJ1398.html
BZOJ1398: Vijos1382寻找主人 Necklace 字符串最小表示法相关推荐
- BZOJ 1398: Vijos1382寻找主人 Necklace(最小表示法)
Description 给定两个项链的表示,判断他们是否可能是一条项链. Input 输入文件只有两行,每行一个由0至9组成的字符串,描述一个项链的表示(保证项链的长度是相等的). Output 如果 ...
- [BZOJ1398] Vijos1382寻找主人 Necklace
传送门 http://www.lydsy.com/JudgeOnline/problem.php?id=1398 题目大意 求最小表示法 题解 constmaxn=1000010; varx,ans1 ...
- [bzoj 1398] Vijos1382寻找主人 Necklace 解题报告(最小表示法)
题目链接:https://www.lydsy.com/JudgeOnline/problem.php?id=1398 题目: Description 给定两个项链的表示,判断他们是否可能是一条项链. ...
- bzoj 1398: 寻找主人 AC自动机+最小表示法
题目大意: 给定两个序列判断是否循环同构,若循环同构则输出最小表示 题解: 因为没有样例输入输出,一开始没看到要求输出最小表示 Wa一大页. 但不得不说bzoj还是挺高效的: 赞一个 XD.jpg 判 ...
- 【Vijos1382】【BZOJ1398】寻找主人 Necklace
Description 给定两个项链的表示,判断他们是否可能是一条项链. Input 输入文件只有两行,每行一个由0至9组成的字符串,描述一个项链的表示(保证项链的长度是相等的). Output 如果 ...
- zcmu1550(字符串最小表示法)
1550: AA Time Limit: 1 Sec Memory Limit: 128 MB Submit: 125 Solved: 35 [Submit][Status][Web Board] ...
- 牛客练习赛36 Rabbit的字符串(最小表示法)
题目链接 题目描述 Rabbit得到了一个字符串,她的好朋友xxx可以给这个字符串施加一次魔法. 魔法可以选择字符串的任一位置,并将该位置后面的所有字符水平拼接到串首. 例如:对于字符串abcde,可 ...
- 新生赛3 1003 字符串最小表示法题目
Problem C Time Limit : 2000/1000ms (Java/Other) Memory Limit : 32768/32768K (Java/Other) Total Sub ...
- HDU - 3374 String Problem(最小表示法+最大表示法+KMP的next数组)
题目链接:点击查看 题目大意:给出一个字符串,现在问字符串不断向左循环所能形成的n个字符串中,字典序最小和最大的字符串的编号为多少,分别有多少个 题目分析:字符串最小表示法的模板题,证明和模板都是看大 ...
最新文章
- oracle创建表分区表,oracle创建分区表
- 一种新的在线学习的方法:能够克服单人多任务学习的困难!
- oracle 11g 11.2.0.1 设置HuagePage导致TRC 变大 变多
- springboot多数据源使用EntityManager
- PyTorch实战福利从入门到精通之三——autograd
- Java语言的基础知识6
- 《程序设计技术》第七章例程
- mysql有没有mssql执行计划_MSSQL优化执行计划
- vi编辑器使用技巧篇1
- Windows自动关机设置
- ai面试的优缺点_面试看脸?颜值低会不会被AI刷掉......
- 图像坐标球面投影_C/C++ 图像处理(7)------图像の球面投影算法
- 568A和568B的线序
- 微信小程序之分包加载
- 计算机电子表格考点,计算机一级考试历年常见考点总结:Excel电子表格
- CVPR2021提出的一些新数据集汇总
- 全网最通俗易懂的「插屏广告」接入方法
- [笔记分享] [Display] MIPI屏调试及举例
- PHP网站从服务器下载文件到本地
- Python3网络爬虫实战-38、动态渲染页面抓取:Splash的使用