CF1451B-Non-Substring Subsequence

目录

CF1451B-Non-Substring Subsequence

Hr0d1y has q q queries on a binary string s s of length n n . A binary string is a string containing only characters ‘0’ and ‘1’.

A query is described by a pair of integers li l_i , ri r_i (1li<rin) (1 \leq l_i \lt r_i \leq n) .

For each query, he has to determine whether there exists a good subsequence in s s that is equal to the substring s[liri] s[l_i\ldots r_i] .

  • A substring s[ij] s[i\ldots j] of a string s s is the string formed by characters sisi+1sj s_i s_{i+1} \ldots s_j .
  • String a a is said to be a subsequence of string b b if a a can be obtained from b b by deleting some characters without changing the order of the remaining characters.
  • A subsequence is said to be good if it is not contiguous and has length 2 \ge 2 . For example, if s s is “1100110”, then the subsequences s1s2s4 s_1s_2s_4 (“1100110”) and s1s5s7 s_1s_5s_7 (“1100110”) are good, while s1s2s3 s_1s_2s_3 (“1100110”) is not good.

Can you help Hr0d1y answer each query?

The first line of the input contains a single integer t t ( 1t100 1\leq t \leq 100 ) — the number of test cases. The description of each test case is as follows.

The first line contains two integers n n ( 2n100 2 \leq n \leq 100 ) and q q ( 1q100 1\leq q \leq 100 ) — the length of the string and the number of queries.

The second line contains the string s s .

The i i -th of the next q q lines contains two integers li l_i and ri r_i ( 1li<rin 1 \leq l_i \lt r_i \leq n ).

For each test case, output q q lines. The i i -th line of the output of each test case should contain “YES” if there exists a good subsequence equal to the substring s[liri] s[l_i…r_i] , and “NO” otherwise.

You may print each letter in any case (upper or lower).

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
2
6 3
001000
2 4
1 3
3 5
4 2
1111
1 4
2 3
1
2
3
4
5
YES
NO
YES
NO
YES
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#include "ybwhead/ios.h"
string s;
int n,q;
int main()
{
	int TTT;
	yin>>TTT;
	while(TTT--)
	{
		yin>>n>>q;
		yin>>s;
		for(int i=1;i<=q;i++)
		{
			int l,r;
			yin>>l>>r;--l;--r;
			bool flg=0;
			for(int j=0;j<l;j++)
			{
				if(s[j]==s[l])
				{
					flg=1;break;
				}
			}
			for(int j=r+1;j<n;j++)
			{
				if(s[j]==s[r])
				{
					flg=1;break;
				}
			}
			if(flg)puts("YES");
			else puts("NO");
		}
	}
	return 0;
}

来发评论吧~
Powered By Valine
v1.4.14