CF1451B.Non-Substring Subsequence

传统题 时间 2000 ms 内存 256 MiB 4 尝试 1 已通过 1 标签

Non-Substring Subsequence

题目描述

Hr0d1y 有 qq 个关于一个长度为 nn 的二进制字符串 ss 的询问。二进制字符串是仅包含字符 '0' 和 '1' 的字符串。

每个询问由一对整数 lil_irir_i (1li<rin)(1 \leq l_i < r_i \leq n) 描述。

对于每个询问,他需要判断是否存在一个好的子序列等于子串 s[liri]s[l_i\ldots r_i]

  • 字符串 s[ij]s[i\ldots j] 表示字符串 ss 的第 ii 个到第 jj 个字符组成的子串,即 sisi+1sjs_i s_{i+1} \ldots s_j
  • 如果字符串 aa 可以通过从字符串 bb 中删除某些字符(不改变剩余字符的顺序)得到,则称 aabb 的一个子序列。
  • 如果一个子序列不是连续的且长度 2\ge 2,则称其为好的子序列。例如,若 ss 为 "1100110",则子序列 s1s2s4s_1s_2s_4("1100110")和 s1s5s7s_1s_5s_7("1100110")是好的子序列,而 s1s2s3s_1s_2s_3("1100110")不是好的子序列。

你能帮助 Hr0d1y 回答每个询问吗?

输入格式

输入的第一行包含一个整数 tt1t1001 \leq t \leq 100)——表示测试用例的数量。每个测试用例的描述如下:

第一行包含两个整数 nn2n1002 \leq n \leq 100)和 qq1q1001 \leq q \leq 100)——字符串的长度和询问的数量。

第二行包含字符串 ss

接下来的 qq 行中,第 ii 行包含两个整数 lil_irir_i1li<rin1 \leq l_i < r_i \leq n)。

输出格式

对于每个测试用例,输出 qq 行。每个测试用例的第 ii 行输出 "YES",如果存在一个好的子序列等于子串 s[liri]s[l_i\ldots r_i],否则输出 "NO"。

你可以用任意大小写输出每个字母。

说明/提示

在第一个测试用例中:

  • s[24]=s[2\ldots 4] = "010"。在这种情况下,s1s3s5s_1s_3s_5("001000")和 s2s3s6s_2s_3s_6("001000")是合适的好的子序列,而 s2s3s4s_2s_3s_4("001000")不是好的子序列。
  • s[13]=s[1\ldots 3] = "001"。不存在合适的好的子序列。
  • s[35]=s[3\ldots 5] = "100"。这里 s3s5s6s_3s_5s_6("001000")是合适的好的子序列。

由 ChatGPT 4.1 翻译

样例

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

在线编程 IDE

建议全屏模式获得最佳体验