ECNUOJ 2147 字符环

字符环

Time Limit:1000MS Memory Limit:65536KB
Total Submit:562 Accepted:146

Description 

字符环:就是将给定的一个字符串,首尾相连而形成的一个环。
现在我们来玩一个有趣的两人游戏:
每次甲给出两个字符串A和B,然后让乙判断字符串B是否能够被字符环A所包含.
例如,A = aabcd , B = cdaa , 那么B可以包含在A经过旋转后的字符串A’ = cdaab中.

Input 

输入数据的第一行,一个正整数N,表示测试数据的组数.
对于每个数据:
首先2个正整数lengtha 和 lengthb代表字符串A和字符串B的长度。
接下来一行有两个被一个空格隔开的字符串A和B,A和B的长度如上所输入的长度。
长度的范围是1<=length<=100,并且字符串种只含有小写字母

Output 

对于每组测试数据,输出只有一行

如果B字符串含在字符环A中,则输出:YES 否则输出:NO

Sample Input 

2
5 4
aabcd cdaa
5 4
babcd cdaa

Sample Output 

YES
NO

Hint:
aabcd 经过顺时针循环移动可以得到:aabcd-->abcda-->bcdaa-->abcda-->cdaab-->daabc
babcd 经过顺时针循环移动可以得到:babcd-->abcdb-->bcdba-->cdbab-->dbabc-->babcd

Source

第一届程序设计竞赛

解题:这么傻逼的题目居然只有这么点AC率。。。

喜欢坑爹,会出现m大于n的情况,特别要注意这个

 1 #include <bits/stdc++.h>
 2 using namespace std;
 3 string a,b;
 4 int main() {
 5     int kase,n,m;
 6     ios::sync_with_stdio(false);
 7     cin>>kase;
 8     while(kase--) {
 9         cin>>n>>m;
10         cin>>a>>b;
11         if(m > n) {
12             puts("NO");
13             continue;
14         }
15         a += a;
16         if(a.find(b) == a.npos) puts("NO");
17         else puts("YES");
18     }
19     return 0;
20 }

时间: 2024-11-05 17:34:17

ECNUOJ 2147 字符环的相关文章

字符环

总时间限制:  1000ms 内存限制:  65536kB 描述 有两个由字符构成的环.请写一个程序,计算这两个字符环上最长连续公共字符串的长度.例如,字符串"ABCEFAGADEGKABUVKLM"的首尾连在一起,构成一个环:字符串"MADJKLUVKL"的首尾连在一起,构成一个另一个环:"UVKLMA"是这两个环的一个连续公共字符串. 输入 一行,包含两个字符串,分别对应一个字符环.这两个字符串之间用单个空格分开.字符串长度不超过255,且不

AC日记——字符环 openjudge 1.7 30

30:字符环 总时间限制:  1000ms 内存限制:  65536kB 描述 有两个由字符构成的环.请写一个程序,计算这两个字符环上最长连续公共字符串的长度.例如,字符串“ABCEFAGADEGKABUVKLM”的首尾连在一起,构成一个环:字符串“MADJKLUVKL”的首尾连在一起,构成一个另一个环:“UVKLMA”是这两个环的一个连续公共字符串. 输入 一行,包含两个字符串,分别对应一个字符环.这两个字符串之间用单个空格分开.字符串长度不超过255,且不包含空格等空白符. 输出 输出一个整

30:字符环

30:字符环总时间限制: 1000ms 内存限制: 65536kB描述有两个由字符构成的环.请写一个程序,计算这两个字符环上最长连续公共字符串的长度.例如,字符串“ABCEFAGADEGKABUVKLM”的首尾连在一起,构成一个环:字符串“MADJKLUVKL”的首尾连在一起,构成一个另一个环:“UVKLMA”是这两个环的一个连续公共字符串. 输入一行,包含两个字符串,分别对应一个字符环.这两个字符串之间用单个空格分开.字符串长度不超过255,且不包含空格等空白符.输出输出一个整数,表示这两个字

字符环(openjudge 2755)

字符环 总时间限制: 1000ms   内存限制: 65536kB 描述 有两个由字符构成的环.请写一个程序,计算这两个字符环上最长连续公共字符串的长度.例如,字符串"ABCEFAGADEGKABUVKLM"的首尾连在一起,构成一个环:字符串"MADJKLUVKL"的首尾连在一起,构成一个另一个环:"UVKLMA"是这两个环的一个连续公共字符串. 输入 一行,包含两个字符串,分别对应一个字符环.这两个字符串之间用单个空格分开.字符串长度不超过25

字符串c++字符环

今天这个题目及其难.还好靠身边的丁冠宇大佬帮忙,最后还是把这道题给搞出来了!!! 这里给大家分享一下.希望能帮助到各位. #include <iostream> #include <cstring> #include <algorithm> using namespace std; int main() { int x, y, len, len1, len2, limit, ans=0; string s1, s2; cin >> s1 >> s

noi题库(noi.openjudge.cn) 1.7编程基础之字符串T21——T30

T21:单词替换 描述 输入一个字符串,以回车结束(字符串长度<=100).该字符串由若干个单词组成,单词之间用一个空格隔开,所有单词区分大小写.现需要将其中的某个单词替换成另一个单词,并输出替换之后的字符串. 输入 输入包括3行,第1行是包含多个单词的字符串 s;第2行是待替换的单词a(长度 <= 100);第3行是a将被替换的单词b(长度 <= 100). s, a, b 最前面和最后面都没有空格. 输出 输出只有 1 行,将s中所有单词a替换成b之后的字符串. 样例输入 You w

NOI 1.7编程基础之字符串(35题)

01:统计数字字符个数 查看 提交 统计 提问 总时间限制:  1000ms 内存限制:  65536kB 描述 输入一行字符,统计出其中数字字符的个数. 输入 一行字符串,总长度不超过255. 输出 输出为1行,输出字符串里面数字字符的个数. 样例输入 Peking University is set up at 1898. 样例输出 4 来源 习题(7-1) 医学部 2010 期末试题 樊波 1 #include<cstdio> 2 #include<cstring> 3 ch

【USACO 5.5.2】Hidden Password

题目大意 给出从一个字符环,求从哪个位置断开后的字符串的字典序最小. 题解 不多说,一条模板题.就是后缀数组(或后缀树). 先把字符串倍长,后缀数组预处理(请看相关资料),扫一遍SA数组,找符合条件的即可. 代码 /* TASK:hidden LANG:C++ */ #include <cstdio> #include <cstring> #include <algorithm> using namespace std; const int MAXN = 200005;

整理小朋友在noi.openjudge上的作业(1)

NOI(题库正在建设中,做题纪录有可能会被删除,请注意) 第一章的统计放前面 1 编程基础之输入输出 10 0 0% 最基础有空补刷 2 编程基础之变量定义.赋值及转换 10 0 0% 最基础有空补刷 3 编程基础之算术表达式与顺序执行 20 0 0% 最基础有空补刷 4 编程基础之逻辑表达式与条件分支 21 0 0% 最基础有空补刷 5 编程基础之循环控制 45 10 22% 最基础有空补刷 6 编程基础之一维数组 15 5 33% 最基础有空补刷 7 编程基础之字符串 35 0 0% 有必要