【bzoj1398】【寻找主人】【最小表示法】
来源:互联网 发布:网络信息安全管理办法 编辑:程序博客网 时间:2024/04/29 05:41
Description
给定两个项链的表示,判断他们是否可能是一条项链。
Input
输入文件只有两行,每行一个由0至9组成的字符串,描述一个项链的表示(保证项链的长度是相等的)。
Output
如果两条项链不可能同构,那么输出’No’,否则的话,第一行输出一个’Yes’,第二行输出该项链的字典序最小的表示。 设L = 项链长度, 对于50%的数据L <= 100000; 对于100%的数据L <= 1000000。
题解:
求出两个串的最小表示检验是否一样即可.
代码:
#include<iostream>#include<cstdio>#include<cstring>#define N 1000010using namespace std;char s1[N],s2[N];int len,a,b;int calc(char *s,int l){ int i(0),j(1),k(0),f; while (i<l&&j<l&&k<l){ f=s[(i+k)%l]-s[(j+k)%l]; if (!f) k++; else{ if (f>0) i=i+k+1; else j=j+k+1; if (i==j) i++; k=0; } } return min(i,j);}int main(){ scanf("%s%s",s1,s2); len=strlen(s1); int a=calc(s1,len); int b=calc(s2,len); for (int i=0;i<len;i++) if (s1[(a+i)%len]!=s2[(b+i)%len]) return cout<<"No"<<endl,0; cout<<"Yes"<<endl; for (int i=0;i<len;i++) printf("%c",s1[(a+i)%len]);}
0 0
- 【bzoj1398】【寻找主人】【最小表示法】
- 【bzoj1398】Vijos1382寻找主人 Necklace 最小表示法
- bzoj1398 寻找主人
- 【Vijos1382】【BZOJ1398】寻找主人 Necklace
- [BZOJ1398] Vijos1382寻找主人 Necklace
- 【bzoj1398】Vijos1382寻找主人 Necklace
- bzoj1398: Vijos1382寻找主人 Necklace
- bzoj1398: Vijos1382寻找主人 Necklace
- bzoj1398 Vijos1382寻找主人 Necklace
- BZOJ 1398: Vijos1382寻找主人 Necklace 字符串最小表示法
- BZOJ 1398: Vijos1382寻找主人 Necklace 最小表示法
- BZOJ 1398: Vijos1382寻找主人 Necklace【字符串最小表示
- 寻找好主人
- vijos-1382 寻找主人
- hustoj 2766: 寻找主人
- 最小表示法
- poj1509(最小表示法)
- hdu4162(最小表示法)
- 解决VC++6.0 error C2065: 'ODS_HOTLIGHT' : undeclared identifier问题
- 单链表----定义、增加节点、删除节点、遍历输出(java)
- 扩展jQuery实现日期联动
- So Easy!!! (栈模拟)
- 查看表空间占用情况
- 【bzoj1398】【寻找主人】【最小表示法】
- Unity3d帧率设置及在游戏运行时显示帧率
- 野指针和悬垂指针有什么区别?
- No qualifying bean of type [..] found for dependency
- 操作日历的URL
- iOS获取设备唯一标识符的方法
- maven的依赖特性,冲突解决(五)
- Codeforces Round #135 (Div. 2) D. Choosing Capital for Treeland
- caffe 源码简单剖析