Description

给定两个项链的表示,判断他们是否可能是一条项链。

Input

输入文件只有两行,每行一个由0至9组成的字符串,描述一个项链的表示(保证项链的长度是相等的)。

Output

如果两条项链不可能同构,那么输出’No’,否则的话,第一行输出一个’Yes’
第二行输出该项链的字典序最小的表示。 设L = 项链长度,L <= 1000000。

Sample Input

2234342423
2423223434

Sample Output

Yes
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 字符串最小表示法相关推荐

  1. BZOJ 1398: Vijos1382寻找主人 Necklace(最小表示法)

    Description 给定两个项链的表示,判断他们是否可能是一条项链. Input 输入文件只有两行,每行一个由0至9组成的字符串,描述一个项链的表示(保证项链的长度是相等的). Output 如果 ...

  2. [BZOJ1398] Vijos1382寻找主人 Necklace

    传送门 http://www.lydsy.com/JudgeOnline/problem.php?id=1398 题目大意 求最小表示法 题解 constmaxn=1000010; varx,ans1 ...

  3. [bzoj 1398] Vijos1382寻找主人 Necklace 解题报告(最小表示法)

    题目链接:https://www.lydsy.com/JudgeOnline/problem.php?id=1398 题目: Description 给定两个项链的表示,判断他们是否可能是一条项链. ...

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

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

  5. 【Vijos1382】【BZOJ1398】寻找主人 Necklace

    Description 给定两个项链的表示,判断他们是否可能是一条项链. Input 输入文件只有两行,每行一个由0至9组成的字符串,描述一个项链的表示(保证项链的长度是相等的). Output 如果 ...

  6. zcmu1550(字符串最小表示法)

    1550: AA Time Limit: 1 Sec  Memory Limit: 128 MB Submit: 125  Solved: 35 [Submit][Status][Web Board] ...

  7. 牛客练习赛36 Rabbit的字符串(最小表示法)

    题目链接 题目描述 Rabbit得到了一个字符串,她的好朋友xxx可以给这个字符串施加一次魔法. 魔法可以选择字符串的任一位置,并将该位置后面的所有字符水平拼接到串首. 例如:对于字符串abcde,可 ...

  8. 新生赛3 1003 字符串最小表示法题目

    Problem C Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 32768/32768K (Java/Other) Total Sub ...

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

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

最新文章

  1. PCLPCL/OpenNI tutorial 2: Cloud processing (basic)
  2. 自然语言处理NLP之文本蕴涵、智能问答、语音识别、对话系统、文本分类、情感计算
  3. jmeter 正则获取参数集合和ForEach控制器结合使用(转)
  4. Win:Win系统下安装Linux的Ubuntu系统的简介、安装之详细攻略
  5. linux 易语言窗口程序_浅谈Linux入门的基本知识
  6. xml方式实现aop-切点表达式的写法
  7. python内置对象是什么_#【Python】【基础知识】【内置对象常用方法】
  8. 关于ISA2006引起网速慢或间歇性断网的问题的解决方法
  9. Advanced R之数据结构
  10. webpack4升级指南
  11. Ubuntu 10.04 is coming
  12. 3月28日晚中央电视台出现重大故障?!
  13. 转载:软件工程师的视角看网络(网络那点事)
  14. 驻点运维人员被客户投诉要求换人,换还是不换?
  15. 你的宽带ip地址被100.64了吗?
  16. 微信小程序使用RenderingContext进行图片尺寸压缩
  17. 【前端面筋】终于等到你!!!
  18. jQuery appendTo() 方法
  19. php 实现保留两位小数
  20. 为企业上云号脉,听听这些ISV如何说?

热门文章

  1. Python第二十二天 stat模块 os.chmod方法 os.stat方法 pwd grp模块
  2. VMware vSphere 6简单部署---VCSA( vCenter Server Appliance)部署
  3. 阅读 Linux 内核源码——共享内存
  4. InstallShield与Visual Studio
  5. How many levels are there at the in the digital transformation?
  6. csc interview at cambridge
  7. 程序员小哥面对批评该怎么办?以我为例
  8. 简单的树形dp NOJ376 小强的Linux
  9. Symfony 4.3 发布,带来搜索引擎自动保护
  10. method-dispatch/