AT_awtf2025_a.LIS Keeping Swaps

NOI/NOI+/CTSC

通过率:0%

AC君温馨提醒

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

题目描述

给你一个 (1,2,⋯ ,N)(1,2,\cdots,N) 的排列 (P1,P2,⋯ ,PN)(P_1,P_2,\cdots,P_N)。

你可以执行以下操作任意次:

  • 选择一个整数 i(1≤i≤N−1)i(1\le i\le N-1) 并交换 PiP_i 和 Pi+1P_{i+1}。需要满足以下两个条件:
    • 执行操作前 Pi>Pi+1P_i>P_{i+1}。
    • 操作不会改变 PP 的最长上升子序列长度。

找出通过对 PP 执行若干次操作可以达成的字典序最小的排列。

多组数据。

S=(S1,S2,⋯ ,S∣S∣)S=(S_1,S_2,\cdots,S_{\vert S\vert}) 的字典序小于 S=(T1,T2,⋯ ,T∣T∣)S=(T_1,T_2,\cdots,T_{\vert T\vert}) 当且仅当以下两个条件之一被满足。在此 ∣S∣\vert S\vert 和 ∣T∣\vert T\vert 分别表示 SS 和 TT 的长度。

  1. ∣S∣<∣T∣\vert S\vert <\vert T\vert 且 (S1,S2,⋯ ,S∣S∣)=(T1,T2,⋯ ,T∣S∣)(S_1,S_2,\cdots,S_{\vert S\vert})=(T_1,T_2,\cdots,T_{\vert S\vert})。
  2. 存在一个整数 1≤i≤min⁡{∣S∣,∣T∣}1\le i\le \min\{\vert S\vert,\vert T\vert\} 满足:
    • (S1,S2,⋯ ,Si−1)=(T1,T2,⋯ ,Ti−1)(S_1,S_2,\cdots,S_{i-1})=(T_1,T_2,\cdots,T_{i-1})。
    • Si<TiS_i<T_i。

输入格式

第一行一个整数 T(1≤T≤2.5×105)T(1\le T\le 2.5\times 10^5),表示数据组数。

对于每组数据,第一行一个整数 N(1≤N≤2.5×105)N(1\le N\le 2.5\times 10^5)。

第二行 NN 个整数 P1,P2,⋯ ,PN(1≤Pi≤N)P_1,P_2,\cdots,P_N(1\le P_i\le N),为一个 11 到 NN 的排列。

保证单个测试点中 NN 的和不超过 2.5×1052.5\times 10^5。

输出格式

对于每组数据,输出一行一个整数表示答案。

输入输出样例

  • 输入#1

    4
    3
    2 3 1
    3
    3 2 1
    7
    5 7 6 4 2 3 1
    15
    6 4 5 14 15 1 3 9 12 8 10 2 7 13 11

    输出#1

    2 1 3
    3 2 1
    5 2 1 7 6 4 3
    4 1 6 5 3 2 9 8 7 14 12 10 15 13 11

说明/提示

样例解释

对于第一组数据,P=(2,3,1)P=(2,3,1) 不能执行 i=1i=1 的操作,但是可以执行 i=2i=2 的操作,之后 P=(2,1,3)P=(2,1,3),不能执行任何操作。在所有 P=(2,3,1)P=(2,3,1) 通过若干次操作达到的排列中,P=(2,1,3)P=(2,1,3) 是字典序最小的。

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

首页