CF2117B.Shrink

传统题 时间 2000 ms 内存 256 MiB 3 尝试 1 已通过 1 标签

Shrink

题目描述

对一个大小为 m m 的数组 a a 进行“缩小操作”的定义如下:

  • 选择一个索引 i i 2im1 2 \le i \le m - 1 ),使得 ai>ai1 a_i \gt a_{i - 1} ai>ai+1 a_i \gt a_{i + 1}
  • ai a_i 从数组中移除。

定义一个排列 ^{\text{∗}} p p 的“分数”为可以对 p p 执行的最大缩小操作次数。

鸭鸭给你一个整数 n n 。构造一个长度为 n n 的排列 p p ,使其分数尽可能大。如果有多个答案,输出任意一个即可。

^{\text{∗}} 一个长度为 n n 的排列是指由 1 1 n n n n 个不同整数按任意顺序组成的数组。例如,[2,3,1,5,4] [2,3,1,5,4] 是一个排列,但 [1,2,2] [1,2,2] 不是排列(因为 2 2 出现了两次),[1,3,4] [1,3,4] 也不是排列(因为 n=3 n=3 但数组中出现了 4 4 )。

输入格式

输入的第一行包含一个整数 t t 1t103 1 \le t \le 10^3 )——测试用例的数量。

每个测试用例包含一个整数 n n 3n2105 3 \le n \le 2 \cdot 10^5 )——排列的大小。

保证所有测试用例的 n n 之和不超过 2105 2 \cdot 10^5

输出格式

对于每个测试用例,输出任意一个能够最大化缩小操作次数的排列 p1,p2,,pn p_1, p_2, \dots, p_n

说明/提示

在第一个测试用例中:

  • 我们选择 p=[1,3,2] p = [1, 3, 2]
  • 选择索引 2 2 ,并移除 p2 p_2 。数组变为 p=[1,2] p = [1, 2]

可以证明,我们能执行的最大操作次数是 1 1 。另一个有效答案是 p=[2,3,1] p = [2, 3, 1]

在第二个测试用例中:

  • 我们选择 p=[2,3,6,4,5,1] p = [2, 3, 6, 4, 5, 1]
  • 选择索引 5 5 ,并移除 p5 p_5 。数组变为 p=[2,3,6,4,1] p = [2, 3, 6, 4, 1]
  • 选择索引 3 3 ,并移除 p3 p_3 。数组变为 p=[2,3,4,1] p = [2, 3, 4, 1]
  • 选择索引 3 3 ,并移除 p3 p_3 。数组变为 p=[2,3,1] p = [2, 3, 1]
  • 选择索引 2 2 ,并移除 p2 p_2 。数组变为 p=[2,1] p = [2, 1]

我们能执行的最大操作次数是 4 4 。任何分数为 4 4 的排列都是有效的。

样例

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

在线编程 IDE

建议全屏模式获得最佳体验