AT_arc209_d.[ARC209D] A_A_i

省选/NOI-

通过率:0%

AC君温馨提醒

该题目为【atcoder】题库的题目,您提交的代码将被提交至atcoder进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

给定一个长度为 NN 的序列 A=(A1,A2,…,AN)A = (A_1, A_2, \ldots, A_N),每个元素要么是 11 到 NN 之间的整数(包含 11 和 NN),要么是 −1-1。

Snuke 决定用这个序列 AA 创建一个新序列。

首先,将序列 AA 中所有的 −1-1 替换成 11 到 NN 之间的某个整数(包含 11 和 NN)。

接着,根据如下公式创建长度为 NN 的序列 B=(B1,B2,…,BN)B = (B_1, B_2, \ldots, B_N):

  • Bi=AAiB_i = A_{A_i}

请你找出字典序最小的可能的序列 BB。

有 TT 组测试数据。请你分别求解每组数据。

什么是序列的字典序?如果存在整数 1≤i≤N1 \leq i \leq N,使得满足以下两个条件,则序列 C=(C1,C2,…,CN)C = (C_1, C_2, \ldots, C_N) 字典序小于 序列 D=(D1,D2,…,DN)D = (D_1, D_2, \ldots, D_N):

  • (C1,C2,…,Ci−1)=(D1,D2,…,Di−1)(C_1, C_2, \ldots, C_{i-1}) = (D_1, D_2, \ldots, D_{i-1})
  • CiC_i 在数值上小于 DiD_i。

输入格式

输入按如下格式给出:

T
case_1
case_2
⋮
case_T

每组测试数据按如下格式给出:

N A_1 A_2 … A_N

输出格式

对于每组测试数据,输出字典序最小的可能序列 BB,每组测试数据占一行。

输入输出样例

  • 输入#1

    3
    4
    4 -1 -1 3
    5
    5 4 5 3 1
    7
    -1 6 5 -1 7 -1 6

    输出#1

    3 1 4 1
    1 3 1 5 5
    1 1 7 1 6 1 1

说明/提示

样例解释 1

在第一个测试用例中,Snuke 替换之前的序列 AA 为 (4,−1,−1,3)(4, -1, -1, 3)。

假设他将其替换为 A=(4,3,1,3)A = (4, 3, 1, 3)。

则 B=(A4,A3,A1,A3)=(3,1,4,1)B = (A_4, A_3, A_1, A_3) = (3, 1, 4, 1)。

无法得到字典序更小的序列 BB 了。

约束条件

  • 1≤T≤1051 \leq T \leq 10^5
  • 1≤N≤5×1051 \leq N \leq 5 \times 10^5
  • 1≤Ai≤N1 \leq A_i \leq N 或 Ai=−1A_i = -1
  • 所有测试数据中 NN 的总和不超过 5×1055 \times 10^5
  • 所有输入值均为整数。

由 ChatGPT 5 翻译

输入解题思路,AI测评打分。不知道怎么写?

首页