CF1290B Irreducible Anagrams

题目描述

我们称两个字符串 $s$ 和 $t$ 互为「变位词」,如果可以通过重新排列字符串 $s$ 中的字符得到与 $t$ 相等的字符串。 现在考虑两个互为变位词的字符串 $s$ 和 $t$。如果存在一个整数 $k \ge 2$,以及 $2k$ 个非空字符串 $s_1, t_1, s_2, t_2, \dots, s_k, t_k$,满足以下条件,则称 $t$ 是 $s$ 的「可约变位词」: 1. 按顺序拼接 $s_1, s_2, \dots, s_k$ 得到的字符串等于 $s$; 2. 按顺序拼接 $t_1, t_2, \dots, t_k$ 得到的字符串等于 $t$; 3. 对于所有 $1 \le i \le k$,$s_i$ 和 $t_i$ 互为变位词。 如果不存在这样的划分,则称 $t$ 是 $s$ 的「不可约变位词」。注意,这些定义仅在 $s$ 和 $t$ 互为变位词时才有意义。 例如,考虑字符串 $s = $ "gamegame"。则字符串 $t = $ "megamage" 是 $s$ 的可约变位词,例如可以选择 $s_1 = $ "game",$s_2 = $ "gam",$s_3 = $ "e",$t_1 = $ "mega",$t_2 = $ "mag",$t_3 = $ "e": ![](https://cdn.luogu.com.cn/upload/vjudge_pic/CF1290B/c163083e3bbaacf9e28f6fddff5f78534bd4ddb9.png) 另一方面,可以证明 $t = $ "memegaga" 是 $s$ 的不可约变位词。 现在给定一个字符串 $s$ 和 $q$ 个询问,每个询问由两个整数 $1 \le l \le r \le |s|$(其中 $|s|$ 表示字符串 $s$ 的长度)组成。对于每个询问,你需要判断 $s$ 的第 $l$ 个字符到第 $r$ 个字符组成的子串,是否存在至少一个不可约变位词。

输入格式

第一行包含一个仅由小写英文字母组成的字符串 $s$($1 \le |s| \le 2 \times 10^5$)。 第二行包含一个整数 $q$($1 \le q \le 10^5$),表示询问的个数。 接下来的 $q$ 行,每行包含两个整数 $l$ 和 $r$($1 \le l \le r \le |s|$),表示一次询问,询问 $s$ 的第 $l$ 个字符到第 $r$ 个字符组成的子串。

输出格式

对于每个询问,如果对应的子串存在至少一个不可约变位词,输出一行 "Yes"(不含引号);否则输出一行 "No"(不含引号)。

说明/提示

在第一个样例中,第一个和第三个询问的子串都是 "a",它本身就是不可约变位词,因为无法将其划分为两个或更多非空字符串。而第二个询问的子串是 "aaa",它没有不可约变位词:它唯一的变位词就是它本身,可以选择 $s_1 = $ "a",$s_2 = $ "aa",$t_1 = $ "a",$t_2 = $ "aa",从而证明它是可约变位词。 在第二个样例的第二个询问中,子串为 "abb",例如 "bba" 就是它的不可约变位词。 由 ChatGPT 4.1 翻译