AT_arc181_a.[ARC181A] Sort Left and Right

普及-

通过率:0%

AC君温馨提醒

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

题目描述

给你一个 (1,2,…,N)(1,2,\dots,N) 的排列 P=(P1,P2,…,PN)P=(P_1,P_2,\dots,P_N)。

你要通过执行以下操作零次或多次来满足所有 i=1,2,…,Ni=1,2,\dots,N 的 Pi=iP_i=i:

  • 选择一个整数 kk,使得 1≤k≤N1 \leq k \leq N。如果是 k≥2k \geq 2,把第 11 项到第 (k−1)(k-1) 项的 PP 按升序排序。然后,如果是 k≤N−1k \leq N-1,把 PP 的第 (k+1)(k+1) 项到第 NN 项按升序排序。

可以证明,在这个问题的约束条件下,对于任意 PP,都可以用有限次的运算满足所有 i=1,2,…,Ni=1,2,\dots,N 的 Pi=iP_i=i。请求解所需的最小运算次数。

输入格式

本题的测试点有多组测试数据。

第一行一个整数 TT,表示测试组数。

对于每组测试数据,第一行包括一个整数 NN,第二行包括 NN 个整数,表示排列 PP。

输出格式

输出 TT 行,第 ii 行表示第 ii 组测试数据的答案。

输入输出样例

  • 输入#1

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

    输出#1

    1
    0
    2

说明/提示

样例解释

对于第一个测试用例:

  • 对 k=1k=1 执行操作后,PP 变成了 (2,1,3,4,5)(2,1,3,4,5)。

  • 执行 k=2k=2 操作后,PP 变为 (2,1,3,4,5)(2,1,3,4,5)。

  • 与 k=3k=3 进行运算,结果是 PP 变为 (1,2,3,4,5)(1,2,3,4,5)。

  • 与 k=4k=4 进行运算,结果是 PP 变为 (1,2,3,5,4)(1,2,3,5,4)。

  • 与 k=5k=5 进行运算,结果是 PP 变为 (1,2,3,5,4)(1,2,3,5,4)。

具体来说,对 k=3k=3 进行运算的结果是 PP 满足所有 i=1,2,…,5i=1,2,\dots,5 的 Pi=iP_i=i。因此,所需的最少运算次数为 11。

在第三个测试用例中,先执行 k=4k=4 操作,再执行 k=3k=3 操作,结果 PP 变为 (3,2,1,7,5,6,4)→(1,2,3,7,4,5,6)→(1,2,3,4,5,6,7)(3,2,1,7,5,6,4) \rightarrow (1,2,3,7,4,5,6) \rightarrow (1,2,3,4,5,6,7) 。

对于 100%100\% 的测试数据,保证 1≤T≤1051 \leq T \leq 10^5,3≤N≤2×1053 \leq N \leq 2 \times 10^5,PP 是 (1,2,…,N)(1,2,\dots,N) 的排列。

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

首页