问题 C: 最大k划分

内存限制:524 MB 时间限制:2 S
题面:传统 评测方式:文本比较 上传者:
提交:1 通过:1

题目描述

给定一个字符串 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)(1T1000),表示测试数据组数。

对于每一组测试数据,第一行包含一个由小写字母组成的字符串 SS (1≤∣S∣≤105)(1S105)(下标从 11 开始)。

第二行包含一个整数 qq (1≤q≤105)(1q105),表示询问次数。

接下来 qq 行,每行包含三个整数 l,r,kl,r,k (1≤l≤r≤∣S∣,1≤k≤∣S∣)(1lrS,1kS),表示一个询问。

保证所有测试数据的 ∣S∣S 之和和 qq 之和均不超过 6×1056×105

输出格式

对于每组数据,输出 qq 行,如果存在满足条件的划分,输出 YES,否则输出 NO

输入样例 复制

1
abcacc
3
1 4 2
2 6 3
3 4 2 

输出样例 复制

YES
YES
NO