1398: Vijos1382寻找主人 Necklace

Time Limit: 5 Sec  Memory Limit: 128 MB
Submit: 308  Solved: 129

Description

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

Input

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

Output

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

Sample Input

2234342423
2423223434

Sample Output

Yes
2234342423

HINT

Source

【分析】

  最小表示法。。有点忘了。。

 #include<cstdio>
#include<cstdlib>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
#define Maxn 1000010 char s1[*Maxn],s2[*Maxn];
int l; int mymin(int x,int y) {return x<y?x:y;} int ffind(char *s)
{
int i=,j=,k=;
while(i+k<=l&&j+k<=l)
{
if(s[i+k]==s[j+k]) k++;
else if(s[i+k]<s[j+k]) j+=k+,k=;
else i+=k+,k=;
if(i==j) j++;
}
return mymin(i,j);
} int main()
{
scanf("%s%s",s1,s2);
l=strlen(s1);
for(int i=;i<l;i++) s1[i+l]=s1[i];
for(int i=;i<l;i++) s2[i+l]=s2[i];
int a=ffind(s1),b=ffind(s2);
bool ok=;
for(int i=;i<l;i++) if(s1[a+i]!=s2[b+i]) {ok=;break;}
if(!ok) printf("No\n");
else
{
printf("Yes\n");
for(int i=;i<l;i++) printf("%c",s1[a+i]);
printf("\n");
}
return ;
}

2017-04-17 08:14:10

【BZOJ 1398】 1398: Vijos1382寻找主人 Necklace (最小表示法)的更多相关文章

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

    传送门 解题思路 最小表示法.首先对于判断是不是循环同构的串,直接扫一遍用哈希判即可.然后要输出字典序最小的就要用到最小表示法,首先可以把串复制一遍,这样的话就可以把串变成静态操作.如果对于两个位置\ ...

  2. BZOJ1398Vijos1382寻找主人 Necklace——最小表示法

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

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

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

  4. BZOJ1398: Vijos1382寻找主人 Necklace 字符串最小表示法

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

  5. 初涉最小表示法&&bzoj1398: Vijos1382寻找主人 Necklace

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

  6. 【bzoj1398】Vijos1382寻找主人 Necklace

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

  7. vijos1382寻找主人

    题目大意: 给出两个串(长度<=1e6),问是否同构,如果同构输出最小表示. 题解: 这是最小表示法模板题.在这里好好讲一下最小表示法. 首先有一个最暴力的方法:把所有表示搞出来排序. 时间复杂 ...

  8. vijos-1382 寻找主人

    题意: 给出两个同样长度的数字串: 求两个串是否本质同样.同样则输出最小表示. 长度L似乎给的不正确,大概是2000000左右吧: 题解: 最小表示法裸题.证明正确性啥的详见论文吧: 这东西大体的思路 ...

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

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

随机推荐

  1. opencv 高级拼接函数Stitcher

    Stitcher https://docs.opencv.org/trunk/d8/d19/tutorial_stitcher.html http://blog.csdn.net/czl389/art ...

  2. 2017ACM暑期多校联合训练 - Team 1 1011 HDU 6043 KazaQ's Socks (找规律)

    题目链接 Problem Description KazaQ wears socks everyday. At the beginning, he has n pairs of socks numbe ...

  3. CentOS7最小化安装连接到网络的解决方案

    周末在家想装个虚拟机学一下Hadoop啥的,因为网速小水管比较慢所以下载的是CentOS的minimal版本的: 这个版本安装完之后默认是没有安装net-tools的,也就是说ifconfig不能用: ...

  4. 常用的css3新特性总结

    1:CSS3阴影 box-shadow的使用和技巧总结: 基本语法是{box-shadow:[inset] x-offset y-offset blur-radius spread-radiuscol ...

  5. 巅峰极客第二场CTF部分writeup

    word-MISC 微信回答问题+word字体里. sqli-WEB 注册个admin空格即可,长字符截断. 晚上把后续的写出来.现在睡觉

  6. python基础===将Flask用于实现Mock-server

    from flask import Flask from flask import request, Response, jsonify import random import string app ...

  7. Python设计模式中单例模式的实现及在Tornado中的应用

    单例模式的实现方式 将类实例绑定到类变量上 class Singleton(object): _instance = None def new(cls, *args): if not isinstan ...

  8. css 水平、垂直居中

    水平居中 行内元素 行内元素:(img.span.文字等行内元素),通过在父级元素设置 text-align:center 使元素水平居中. 块级元素 块级元素:(div.p.h1...h6.ul.l ...

  9. IDEA配置toString方法

    1.toString JSON带父类toString public java.lang.String toString() { final java.lang.StringBuilder sb = n ...

  10. 用OpenSSL命令行生成证书文件

    用OpenSSL命令行生成证书文件 1.首先要生成服务器端的私钥(key文件): openssl genrsa -des3 -out server.key 1024 运行时会提示输入密码,此密码用于加 ...