AT_abc280_h [ABC280Ex] Substring Sort
题目描述
给定 N 个字符串 S1,S2,…,SN。令 $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≤i≤M,有 1≤Ki≤N 且 1≤Li≤Ri≤∣SKi∣。
- 对于所有 1≤i≤j≤M,有 SKi[Li,Ri]≤SKj[Lj,Rj](按字典序比较)。
给定 Q 个整数 x1,x2,…,xQ,其中 1≤x1<x2<⋯<xQ≤M。对于每个 1≤i≤Q,请各自求出一个可能的 (Kxi,Lxi,Rxi)。可以证明,满足条件的三元组序列至少存在一个。如果存在多个满足条件的三元组,输出任意一个即可。不同 xi 之间,不要求三元组序列相同。
字典序的定义如下:对于两个字符串 S,T,当且仅当满足以下任一条件时,S≤T(按字典序):
- ∣S∣≤∣T∣ 且 S=T[1,∣S∣]。
- 存在 1≤k≤min(∣S∣,∣T∣),对于所有 1≤i≤k−1,S 和 T 的第 i 个字符相等,且 S 的第 k 个字符在字母表中严格小于 T 的第 k 个字符。
输入格式
输入按以下格式从标准输入给出。
N
S1
S2
⋮
SN
Q
x1 x2 … xQ
输出格式
输出 Q 行。第 i 行输出一个满足条件的 (Kxi,Lxi,Rxi),用空格分隔。若存在多个满足条件的三元组,输出任意一个即可。
输入输出样例 #1
输入 #1
2
abab
cab
2
5 14
输出 #1
1 3 4
2 1 1
输入输出样例 #2
输入 #2
3
a
a
ba
2
1 2
输出 #2
1 1 1
1 1 1
输入输出样例 #3
输入 #3
10
gxgpuamkx
szhkbpphykin
ezplvfja
mopodotkrj
rimlvumuar
nexcfyce
eurgvjyos
dhvuyfvt
nrdyluacvra
ggwnpnzij
6
74 268 310 380 455 489
输出 #3
3 1 2
4 4 5
4 3 7
9 6 6
6 6 6
2 2 12
说明/提示
数据范围
- 1≤N≤105
- 1≤∣Si∣≤105
- i=1∑N∣Si∣≤105
- 1≤Q≤2×105
- $1 \leq x_1 < x_2 < \cdots < x_Q \leq \displaystyle\sum_{i=1}^N \frac{|S_i|(|S_i|+1)}{2}$
- N,Q,x1,x2,…,xQ 均为整数
- Si 仅由小写英文字母组成
样例解释 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)$。按此顺序排列时,对应的 SKi[Li,Ri] 为(a, a, a, ab, ab, ab, aba, abab, b, b, b, ba, bab, c, ca, cab)。注意,第 5 个元素 (1,3,4) 与第 4 个或第 6 个元素互换也满足条件,因此 (Kx1,Lx1,Rx1)=(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)。对于输出的 (Kxi,Lxi,Rxi),不要求所有 xi 对应的三元组来自同一个满足条件的序列。
由 ChatGPT 4.1 翻译