CF1290B.Irreducible Anagrams

普及+/提高

通过率:0%

时间限制:2.00s

内存限制:256MB

AC君温馨提醒

该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

Let's call two strings ss and tt anagrams of each other if it is possible to rearrange symbols in the string ss to get a string, equal to tt.

Let's consider two strings ss and tt which are anagrams of each other. We say that tt is a reducible anagram of ss if there exists an integer k≥2k \ge 2 and 2k2k non-empty strings s1,t1,s2,t2,…,sk,tks_1, t_1, s_2, t_2, \dots, s_k, t_k that satisfy the following conditions:

  1. If we write the strings s1,s2,…,sks_1, s_2, \dots, s_k in order, the resulting string will be equal to ss;
  2. If we write the strings t1,t2,…,tkt_1, t_2, \dots, t_k in order, the resulting string will be equal to tt;
  3. For all integers ii between 11 and kk inclusive, sis_i and tit_i are anagrams of each other.

If such strings don't exist, then tt is said to be an irreducible anagram of ss. Note that these notions are only defined when ss and tt are anagrams of each other.

For example, consider the string $s = $ "gamegame". Then the string $t = $ "megamage" is a reducible anagram of ss, we may choose for example $s_1 = $ "game", $s_2 = $ "gam", $s_3 = $ "e" and $t_1 = $ "mega", $t_2 = $ "mag", $t_3 = $ "e":

On the other hand, we can prove that $t = $ "memegaga" is an irreducible anagram of ss.

You will be given a string ss and qq queries, represented by two integers 1≤l≤r≤∣s∣1 \le l \le r \le |s| (where ∣s∣|s| is equal to the length of the string ss). For each query, you should find if the substring of ss formed by characters from the ll-th to the rr-th has at least one irreducible anagram.

我们称两个字符串 ss 和 tt 互为变位词(anagram),如果可以通过重排字符串 ss 中的字符得到与 tt 相等的字符串。

考虑两个互为变位词的字符串 ss 和 tt。若存在整数 k≥2k \ge 2 以及 2k2k 个非空字符串 s1,t1,s2,t2,…,sk,tks_1, t_1, s_2, t_2, \dots, s_k, t_k,满足以下条件,则称 tt 是 ss 的一个可约变位词(reducible anagram):

  1. 将字符串 s1,s2,…,sks_1, s_2, \dots, s_k 按顺序拼接,所得字符串等于 ss;
  2. 将字符串 t1,t2,…,tkt_1, t_2, \dots, t_k 按顺序拼接,所得字符串等于 tt;
  3. 对每个 i=1,2,…,ki = 1, 2, \dots, k,sis_i 与 tit_i 互为变位词。

若不存在满足上述条件的字符串,则称 tt 是 ss 的一个不可约变位词(irreducible anagram)。注意:上述概念仅在 ss 与 tt 互为变位词的前提下定义。

例如,考虑字符串 $s = $ "gamegame"。则字符串 $t = $ "megamage" 是 ss 的一个可约变位词;我们可以取 $s_1 = $ "game"、$s_2 = $ "gam"、$s_3 = $ "e",以及 $t_1 = $ "mega"、$t_2 = $ "mag"、$t_3 = $ "e":

另一方面,可以证明 $t = $ "memegaga" 是 ss 的一个不可约变位词。

你将被给定一个字符串 ss 和 qq 个查询,每个查询由两个整数 1≤l≤r≤∣s∣1 \le l \le r \le |s| 表示(其中 ∣s∣|s| 表示字符串 ss 的长度)。对每个查询,你需要判断:由 ss 的第 ll 个字符到第 rr 个字符构成的子串是否至少存在一个不可约变位词。

输入格式

The first line contains a string ss, consisting of lowercase English characters (1≤∣s∣≤2⋅1051 \le |s| \le 2 \cdot 10^5).

The second line contains a single integer qq (1≤q≤1051 \le q \le 10^5) — the number of queries.

Each of the following qq lines contain two integers ll and rr (1≤l≤r≤∣s∣1 \le l \le r \le |s|), representing a query for the substring of ss formed by characters from the ll-th to the rr-th.

第一行包含一个字符串 ss,由小写英文字母组成(1≤∣s∣≤2⋅1051 \le |s| \le 2 \cdot 10^5)。

第二行包含一个整数 qq(1≤q≤1051 \le q \le 10^5),表示查询次数。

接下来的 qq 行中,每行包含两个整数 ll 和 rr(1≤l≤r≤∣s∣1 \le l \le r \le |s|),表示对字符串 ss 中从第 ll 个字符到第 rr 个字符所构成的子串进行一次查询。

输出格式

For each query, print a single line containing "Yes" (without quotes) if the corresponding substring has at least one irreducible anagram, and a single line containing "No" (without quotes) otherwise.

对于每个查询,如果对应的子串至少存在一个不可约异位词,则输出一行“Yes”(不带引号);否则输出一行“No”(不带引号)。

输入输出样例

  • 输入#1

    aaaaa
    3
    1 1
    2 4
    5 5

    输出#1

    Yes
    No
    Yes
  • 输入#2

    aabbbbbbc
    6
    1 2
    2 4
    2 2
    1 9
    5 7
    3 5

    输出#2

    No
    Yes
    Yes
    Yes
    No
    No

说明/提示

In the first sample, in the first and third queries, the substring is "a", which has itself as an irreducible anagram since two or more non-empty strings cannot be put together to obtain "a". On the other hand, in the second query, the substring is "aaa", which has no irreducible anagrams: its only anagram is itself, and we may choose $s_1 = $ "a", $s_2 = $ "aa", $t_1 = $ "a", $t_2 = $ "aa" to show that it is a reducible anagram.

In the second query of the second sample, the substring is "abb", which has, for example, "bba" as an irreducible anagram.

在第一个样例中,第一次和第三次查询的子串均为 “a”,它自身即为一个不可约变位词,因为无法用两个或更多个非空字符串拼接得到 “a”。另一方面,在第二次查询中,子串为 “aaa”,它没有不可约变位词:其唯一的变位词就是它自身;我们可取 $s_1 = $ “a”、$s_2 = $ “aa”、$t_1 = $ “a”、$t_2 = $ “aa”,从而说明它是可约变位词。

在第二个样例的第二次查询中,子串为 “abb”,它具有例如 “bba” 这样的不可约变位词。

输入解题思路,AI测评打分。不知道怎么写?

首页