AT_abc280_h [ABC280Ex] Substring Sort
题目描述
给定 $N$ 个字符串 $S_1,S_2,\ldots,S_N$。令 $M = \displaystyle\sum_{i=1}^N \frac{|S_i|(|S_i|+1)}{2}$。
对于字符串 $S$ 和整数 $L, R$,$S[L, R]$ 表示 $S$ 的第 $L$ 个字符到第 $R$ 个字符组成的子串。
长度为 $M$ 的三元组序列 $((K_1, L_1, R_1), (K_2, L_2, R_2), \ldots, (K_M, L_M, R_M))$ 满足以下条件:
- $M$ 个元素互不相同。
- 对于所有 $1 \leq i \leq M$,有 $1 \leq K_i \leq N$ 且 $1 \leq L_i \leq R_i \leq |S_{K_i}|$。
- 对于所有 $1 \leq i \leq j \leq M$,有 $S_{K_i}[L_i, R_i] \leq S_{K_j}[L_j, R_j]$(按字典序比较)。
给定 $Q$ 个整数 $x_1, x_2, \ldots, x_Q$,其中 $1 \leq x_1 < x_2 < \cdots < x_Q \leq M$。对于每个 $1 \leq i \leq Q$,请各自求出一个可能的 $(K_{x_i}, L_{x_i}, R_{x_i})$。可以证明,满足条件的三元组序列至少存在一个。如果存在多个满足条件的三元组,输出任意一个即可。不同 $x_i$ 之间,不要求三元组序列相同。
字典序的定义如下:对于两个字符串 $S, T$,当且仅当满足以下任一条件时,$S \leq T$(按字典序):
- $|S| \leq |T|$ 且 $S = T[1, |S|]$。
- 存在 $1 \leq k \leq \min(|S|, |T|)$,对于所有 $1 \leq i \leq k-1$,$S$ 和 $T$ 的第 $i$ 个字符相等,且 $S$ 的第 $k$ 个字符在字母表中严格小于 $T$ 的第 $k$ 个字符。
输入格式
输入按以下格式从标准输入给出。
> $N$
> $S_1$
> $S_2$
> $\vdots$
> $S_N$
> $Q$
> $x_1$ $x_2$ $\ldots$ $x_Q$
输出格式
输出 $Q$ 行。第 $i$ 行输出一个满足条件的 $(K_{x_i}, L_{x_i}, R_{x_i})$,用空格分隔。若存在多个满足条件的三元组,输出任意一个即可。
说明/提示
### 数据范围
- $1 \leq N \leq 10^5$
- $1 \leq |S_i| \leq 10^5$
- $\displaystyle\sum_{i=1}^N |S_i| \leq 10^5$
- $1 \leq Q \leq 2 \times 10^5$
- $1 \leq x_1 < x_2 < \cdots < x_Q \leq \displaystyle\sum_{i=1}^N \frac{|S_i|(|S_i|+1)}{2}$
- $N, Q, x_1, x_2, \ldots, x_Q$ 均为整数
- $S_i$ 仅由小写英文字母组成
### 样例解释 1
$M=16$,满足条件的三元组序列可以为:$(1,1,1), (1,3,3), (2,2,2), (1,1,2), (1,3,4), (2,2,3), (1,1,3), (1,1,4), (1,2,2), (1,4,4), (2,3,3), (1,2,3), (1,2,4), (2,1,1), (2,1,2), (2,1,3)$。按此顺序排列时,对应的 $S_{K_i}[L_i, R_i]$ 为(`a`, `a`, `a`, `ab`, `ab`, `ab`, `aba`, `abab`, `b`, `b`, `b`, `ba`, `bab`, `c`, `ca`, `cab`)。注意,第 $5$ 个元素 $(1,3,4)$ 与第 $4$ 个或第 $6$ 个元素互换也满足条件,因此 $(K_{x_1}, L_{x_1}, R_{x_1})=(1,1,2), (2,2,3)$ 也是正确答案。
### 样例解释 2
$M=5$,满足条件的三元组序列可以为:$(1,1,1), (2,1,1), (3,2,2), (3,1,1), (3,1,2)$ 或 $(2,1,1), (3,2,2), (1,1,1), (3,1,1), (3,1,2)$。对于输出的 $(K_{x_i}, L_{x_i}, R_{x_i})$,不要求所有 $x_i$ 对应的三元组来自同一个满足条件的序列。
由 ChatGPT 4.1 翻译