CF1451B.Non-Substring Subsequence
入门
通过率:0%
时间限制:1.00s
内存限制:256MB
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
Hr0d1y has q queries on a binary string s of length n. A binary string is a string containing only characters '0' and '1'.
A query is described by a pair of integers li, ri (1≤li<ri≤n).
For each query, he has to determine whether there exists a good subsequence in s that is equal to the substring s[li…ri].
- A substring s[i…j] of a string s is the string formed by characters sisi+1…sj.
- String a is said to be a subsequence of string b if a can be obtained from 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. For example, if s is "1100110", then the subsequences s1s2s4 ("1100110") and s1s5s7 ("1100110") are good, while s1s2s3 ("1100110") is not good.
Can you help Hr0d1y answer each query?
Hr0d1y 有 q 个关于长度为 n 的二进制字符串 s 的查询。二进制字符串是指仅由字符 '0' 和 '1' 组成的字符串。
每个查询由一对整数 li, ri 描述(满足 1≤li<ri≤n)。
对于每个查询,他需要判断:在 s 中是否存在一个好的子序列,其内容恰好等于子串 s[li…ri]。
- 字符串 s 的子串 s[i…j] 是由字符 sisi+1…sj 构成的字符串。
- 若字符串 a 可通过从字符串 b 中**删除若干字符(不改变剩余字符的相对顺序)**而得到,则称 a 是 b 的子序列。
- 若一个子序列不是连续的(即其对应下标在原字符串中不构成连续区间),且长度 ≥2,则称其为好的子序列。例如,若 s 为
"1100110",则子序列 s1s2s4(对应"1100110")和 s1s5s7(对应"1100110")是好的;而 s1s2s3(对应"1100110")不是好的(因其下标连续)。
你能帮助 Hr0d1y 回答每个查询吗?
输入格式
The first line of the input contains a single integer t (1≤t≤100) — the number of test cases. The description of each test case is as follows.
The first line contains two integers n (2≤n≤100) and q (1≤q≤100) — the length of the string and the number of queries.
The second line contains the string s.
The i-th of the next q lines contains two integers li and ri (1≤li<ri≤n).
输入的第一行包含一个整数 t(1≤t≤100),表示测试用例的数量。每个测试用例的描述如下:
第一行包含两个整数 n(2≤n≤100)和 q(1≤q≤100),分别表示字符串的长度和查询次数。
第二行包含字符串 s。
接下来的 q 行中,第 i 行包含两个整数 li 和 ri(1≤li<ri≤n)。
输出格式
For each test case, output q lines. The i-th line of the output of each test case should contain "YES" if there exists a good subsequence equal to the substring s[li...ri], and "NO" otherwise.
You may print each letter in any case (upper or lower).
对于每个测试用例,输出 q 行。每个测试用例的输出中,第 i 行应包含 "YES"(如果存在一个等于子串 s[li...ri] 的好子序列),否则包含 "NO"。
你可以以任意大小写(大写或小写)输出每个字母。
输入输出样例
输入#1
2 6 3 001000 2 4 1 3 3 5 4 2 1111 1 4 2 3
输出#1
YES NO YES NO YES
说明/提示
In the first test case,
- $s[2\ldots 4] = $ "010". In this case s1s3s5 ("001000") and s2s3s6 ("001000") are good suitable subsequences, while s2s3s4 ("001000") is not good.
- $s[1\ldots 3] = $ "001". No suitable good subsequence exists.
- $s[3\ldots 5] = $ "100". Here s3s5s6 ("001000") is a suitable good subsequence.
在第一个测试用例中,
- $s[2\ldots 4] = $ "010"。此时,s1s3s5("001000")和 s2s3s6("001000")是符合条件的良好子序列,而 s2s3s4("001000")不是良好子序列。
- $s[1\ldots 3] = $ "001"。不存在符合条件的良好子序列。
- $s[3\ldots 5] = $ "100"。此时,s3s5s6("001000")是一个符合条件的良好子序列。
输入解题思路,AI测评打分。不知道怎么写?