本文主要是介绍codeforces --1462B 去年的子弦,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
codeforces --1462B 去年的子弦
多面体有一个字符串s+1…n]长度n由十进制数字组成。多面体对字符串执行以下操作s 不超过一次(即他可以执行操作0或1时间):
多车选择两个数字Ⅰ和J (1≤,≤j≤n),并从 中删除字符s字符串在位置i,i#1,i#2,…,j(即删除子字符串s\i…j]).更正式的,多面体转弦s到字符串s1s2…si=1sj=1sj=2…sn.
例如,字符串s=“20192020” Polycarp 可以变成字符串:
“2020” (在这种情况下(i,j)=(3,6)或(i,j)=(1,4));
“2019220” (在这种情况下(i,j)=(6,6));
“020” (在这种情况下(i,j)=(1,5));
其他操作也是可能的,只有少数列出了上面。
Polycarp 非常喜欢字符串[2020],所以他想知道是否可能转动字符串s成字符串[2020]在不超过一个操作?请注意,您可以执行零操作。
输入
第一行包含正整数t (1≤t≤1000) = 测试中的测试用例数。然后t测试用例如下。
每个测试用例的第一行包含一个整数n (4≤n≤200) = 字符串的长度s.下一行包含一个字符串s长度n由十进制数字组成。允许字符串s以数字0 开头。
输出
对于每个测试用例,输出在单独的行上:
“是” 如果 Polycarp 可以转动字符串s成字符串[2020]在不超过一个操作 (即他可以执行0或1操作);
“没有” 否则。
在任何情况下,您都可以打印"是"和"否"的字母(因此,例如,字符串yes、是、是和"是"都将被识别为肯定答案)。
例子
6
8
20192020
8
22019020
4
2020
5
20002
6
729040
6
200200
输出:
YES
YES
YES
NO
NO
NO
思路:
这个直接分成几种YES的情况即可
1)2020
2)2…020
3)20…20
4)202…0
5)2020…
6)…2020
答案:
#include<stdio.h>
#include<string.h>int main()
{int n;scanf("%d",&n);for(int i=0;i<n;i++){int len;scanf("%d",&len);char s[len];getchar();scanf("%s",s);if(len<4){printf("NO\n");continue;}if(s[0]=='2'&&s[1]=='0'&&s[2]=='2'&&s[3]=='0'){printf("YES\n");continue;}else if(s[len-1]=='0'&&s[len-2]=='2'&&s[len-3]=='0'&&s[len-4]=='2'){printf("YES\n");continue;}else if(s[0]=='2'&&s[1]=='0'&&s[2]=='2'&&s[3]=='0'){printf("YES\n");}else if(s[0]=='2'&&s[1]=='0'&&s[2]=='2'&&s[len-1]=='0'){printf("YES\n");continue;}else if(s[0]=='2'&&s[len-1]=='0'&&s[len-2]=='2'&&s[len-3]=='0'){printf("YES\n");continue;}else if(s[0]=='2'&&s[1]=='0'&&s[len-2]=='2'&&s[len-1]=='0'){printf("YES\n");continue;}else{printf("NO\n");}}return 0;
}
这篇关于codeforces --1462B 去年的子弦的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!