牛客多校第一场 F-Infinite String Comparision( 无限字符串比较、找循环节)
2020-07-13 10:49
169 查看
目录
题意
给你两个字符串a、b,比较两个的无限循环字符串的字典序大小
- 范围 : 1≤∣a∣,∣b∣≤10^5
- 链接 : Infinite String Comparision
- 输入
aa
b
zzz
zz
aba
abaa
- 输出:
<
=
>
解题思路
- 找两字符串的最小循环节
- lcm(la,lb)会超时
- la+lb-lcm(la,lb)<2*max(la,lb)
- Periodicity Lemma(周期性引理):假设一个字符串S有循环节P、Q并且满足P+Q≤|S|+gcd(p,q),那么gcd(p,q)也是一个循环节。
易错点
- 自己当时没注意好数据范围10^5应该是1后加5个0
代码
#include<stdio.h> #include<string.h> #include<algorithm> using namespace std; int main() { char a[10010],b[10010]; while(scanf("%s%s",a,b)!=EOF) { int la=strlen(a),lb=strlen(b),xa=-1,xb=-1,flag=0,cnt=0; int maxn=2*max(la,lb); while(flag==0&&cnt<maxn) { xa++;xa%=la; xb++;xb%=lb; if(a[xa]<b[xb])flag=1; else if(a[xa]>b[xb])flag=-1; cnt++; } if(flag==0)printf("=\n"); else if(flag==-1)printf(">\n"); else if(flag==1)printf("<\n"); } return 0; }
相关文章推荐
- 2019牛客暑期多校训练营(第一场)J:Fraction Comparision
- 2019牛客暑期多校训练营(第一场)J-Fraction Comparision
- c#中从string数组转换到int数组及比较两个字符串相等
- Python 字符串操作(string替换、删除、截取、复制、连接、比较、查找、包含、大小写转换、分割等)
- 如何在Java中进行字符串(String)比较
- String字符串拼接效率比较
- 黄聪:Python 字符串操作(string替换、删除、截取、复制、连接、比较、查找、包含、大小写转换、分割等)
- java String字符串的比较的俩种方法equals与equalsIgnoreCase
- Python 字符串操作(string替换、删除、截取、复制、连接、比较、查找、包含、大小写转换、分割等)
- Python 字符串操作(string替换、删除、截取、复制、连接、比较、查找、包含、大小写转换、分割等)
- String字符串比较
- C# 字符串比较优化(StringComparison)
- 2018牛客多校第一场
- 字符串string和内存流MemoryStream及比特数组byte[]互转比较
- 2019牛客暑期多校训练营(第一场) - E - ABBA - 贪心 - dp - 组合
- 2019牛客暑期多校训练营(第一场),A题(笛卡尔树)
- Python 字符串操作(string替换、删除、截取、复制、连接、比较、查找、包含、大小写转换、分割等)
- 2019牛客暑期多校训练营(第一场)A-Equivalent Prefixes
- Python 字符串操作(string替换、删除、截取、复制、连接、比较、查找、包含、大小写转换、分割等)
- Python 字符串操作(string替换、删除、截取、复制、连接、比较、查找、包含、大小写转换、分割等)