Codeforces Round #685 (Div. 2) Problem - B. Non-Substring Subsequence 题解

题目

题目链接

Codeforces Round #685 (Div. 2) Problem - B. Non-Substring Subsequence

题目大意

现在有一个字符串s,s的长度为n,s[l...r]表示s的一个子串。

有q次查询,每次查询给出l与r,求s中是否有非连续的子串是与s[l...r]相等的。

输入

第一行输入测试情况数量t(1<=t<=100)

每个测试情况的第一行包含2个整数n(2<=n<=100)与q(1<=q<=100)

第二行为字符串s

第三行开始,每行有两个整数l,r(1<=l,r<=n),共有q行

样例输入

2
6 3
001000
2 4
1 3
3 5
4 2
1111
1 4
2 3

样例输出

YES
NO
YES
NO
YES

题解

  • 查找在l之前有没有与s[l]相同的
  • 查找在r之后有没有与s[r]相同的。

如果都没有,则说明不存在。

如果其中一项有,则说明存在。

Then show the code.

#include <stdio.h>

char bstr[200];
int t, n, q, l, r;

int main(){
    scanf("%d",&t);
    while(t--){
        scanf("%d%d", &n, &q);
        scanf("%s", &bstr[1]);
        while(q--){
            int flag = 0;
            scanf("%d%d", &l, &r);
            for(int i=1; i<l; i++){
                if(bstr[i] == bstr[l])
                    flag = 1;
                if(flag) break;
            }
            for(int i=n; i>r; i--){
                if(bstr[i] == bstr[r])
                    flag = 1;
                if(flag) break;
            }
            if(flag) printf("YES\n");
            else printf("NO\n");
        }
    }
    return 0;
}
posted @ 2020-11-22 21:40  1v7w  阅读(132)  评论(0编辑  收藏  举报