给定一个字符串 SS,你需要回答 qq 次询问。每次指定 SS 的一个子串 S[l,r]S[l,r] 和一个位置 kk,其中 S[l,r]S[l,r] 表示从 SS 的第 ll 个字符到第 rr 个字符的子串。请你判断是否可以将该子串划分为若干连续的段,使得第 kk 段的字典序严格大于其他所有段。如果存在这样的划分方案,输出 YES;否则输出 NO。
例如 S=abcaS=abca ,对于 l=1,r=4,k=2l=1,r=4,k=2 存在一种划分 S=a|bc|aS=a|bc|a。其中第二段字符串 bcbc 字典序最大。
为了防止输入过大带来的常数问题,C++ 选手请尽量使用关闭流同步的 std::cin 和 std::cout 实现输入输出,否则可能出现因读入输出问题导致的 TLE 等。
int main(){ std::ios::sync_with_stdio(0); std::cin.tie(0); // your code return 0; }
第一行一个整数 TT (1≤T≤1000)(1≤T≤1000),表示测试数据组数。
对于每一组测试数据,第一行包含一个由小写字母组成的字符串 SS (1≤∣S∣≤105)(1≤∣S∣≤105)(下标从 11 开始)。
第二行包含一个整数 qq (1≤q≤105)(1≤q≤105),表示询问次数。
接下来 qq 行,每行包含三个整数 l,r,kl,r,k (1≤l≤r≤∣S∣,1≤k≤∣S∣)(1≤l≤r≤∣S∣,1≤k≤∣S∣),表示一个询问。
保证所有测试数据的 ∣S∣∣S∣ 之和和 qq 之和均不超过 6×1056×105。
1
abcacc
3
1 4 2
2 6 3
3 4 2
YES
YES
NO