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个字符串中,字典序最小和最大的字符串的编号为多少,分别有多少个 题目分析:字符串最小表示法的模板题,证明和模板都是看大 ...
最新文章
- PCLPCL/OpenNI tutorial 2: Cloud processing (basic)
- 自然语言处理NLP之文本蕴涵、智能问答、语音识别、对话系统、文本分类、情感计算
- jmeter 正则获取参数集合和ForEach控制器结合使用(转)
- Win:Win系统下安装Linux的Ubuntu系统的简介、安装之详细攻略
- linux 易语言窗口程序_浅谈Linux入门的基本知识
- xml方式实现aop-切点表达式的写法
- python内置对象是什么_#【Python】【基础知识】【内置对象常用方法】
- 关于ISA2006引起网速慢或间歇性断网的问题的解决方法
- Advanced R之数据结构
- webpack4升级指南
- Ubuntu 10.04 is coming
- 3月28日晚中央电视台出现重大故障?!
- 转载:软件工程师的视角看网络(网络那点事)
- 驻点运维人员被客户投诉要求换人,换还是不换?
- 你的宽带ip地址被100.64了吗?
- 微信小程序使用RenderingContext进行图片尺寸压缩
- 【前端面筋】终于等到你!!!
- jQuery appendTo() 方法
- php 实现保留两位小数
- 为企业上云号脉,听听这些ISV如何说?
热门文章
- Python第二十二天 stat模块 os.chmod方法 os.stat方法 pwd grp模块
- VMware vSphere 6简单部署---VCSA( vCenter Server Appliance)部署
- 阅读 Linux 内核源码——共享内存
- InstallShield与Visual Studio
- How many levels are there at the in the digital transformation?
- csc interview at cambridge
- 程序员小哥面对批评该怎么办?以我为例
- 简单的树形dp NOJ376 小强的Linux
- Symfony 4.3 发布,带来搜索引擎自动保护
- method-dispatch/