AT_arc044_d.[ARC044D] suffix array
省选/NOI-
通过率:0%
AC君温馨提醒
该题目为【atcoder】题库的题目,您提交的代码将被提交至atcoder进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
高桥君非常喜欢后缀数组的构建算法。他每天都会实现各种各样的后缀数组构建算法来玩。不过,高桥君构建了太多的后缀数组,已经感到厌倦了。因此,他决定,对于给定的一个排列,要求出一个仅由大写英文字母组成的、字典序最小的字符串,使得该字符串的后缀数组恰好等于给定的排列。
这里,给定两个字符串 X1,X2,…,Xs 和 Y1,Y2,…,Yt,我们定义 X<Y(即 X 的字典序小于 Y)当且仅当满足以下两个条件之一:
- 存在某个整数 i (1≤i≤min(s,t)),使得对于任意 j (1≤j≤i−1) 都有 Xj=Yj,且 Xi<Yi;
- 对于任意 i (1≤i≤min(s,t)) 都有 Xi=Yi,且 s<t。
对于给定的字符串 S,其后缀数组定义为:对于每个 i,枚举从 S 的第 i 个字符到末尾的所有后缀字符串,将这些后缀按字典序排序,然后输出这些后缀在原字符串中的起始位置 i 的排列。例如,字符串 ABACABA 的后缀数组为 [7,5,1,3,6,2,4]。
现在给定一个长度为 N 的排列,请你求出一个仅由大写英文字母组成的、字典序最小的字符串,使其后缀数组等于该排列。如果不存在这样的字符串,则输出 −1。
输入格式
输入通过标准输入给出,格式如下:
N
A1 A2 … AN
- 第 1 行包含一个整数 N (1≤N≤106)。
- 第 2 行包含一个长度为 N 的整数序列 A1,…,AN (1≤A1,…,AN≤N),保证这 N 个整数两两不同。
输出格式
输出一个仅由大写英文字母组成的、字典序最小的字符串,使其后缀数组等于给定的排列 A1,…,AN。如果不存在这样的字符串,则输出 −1。
输出末尾需要换行。
输入输出样例
输入#1
7 7 5 1 3 6 2 4
输出#1
ABACABA
输入#2
12 7 1 9 10 2 4 3 6 12 5 11 8
输出#2
BDEDGFAHCCGG
说明/提示
样例解释 1
满足条件的字符串还有 CXHZBWA 等,但字典序最小的是 ABACABA,因此输出 ABACABA。
由 ChatGPT 4.1 翻译
输入解题思路,AI测评打分。不知道怎么写?