CF1927E Klever Permutation

题目描述

给定两个整数 $n$ 和 $k$($k \le n$),其中 $k$ 是偶数。 一个长度为 $n$ 的排列是一个包含 $1$ 到 $n$ 的 $n$ 个互不相同整数的数组,顺序任意。例如,$[2,3,1,5,4]$ 是一个排列,但 $[1,2,2]$ 不是排列(因为 $2$ 在数组中出现了两次),$[0,1,2]$ 也不是排列(因为 $n=3$,但 $3$ 没有出现在数组中)。 你的任务是构造一个长度为 $n$ 的 $k$-级排列。 如果一个排列满足:所有长度为 $k$ 的连续子段的和(总共有 $n-k+1$ 个),任意两段的和的差不超过 $1$,则称其为 $k$-级排列。 更正式地说,判断排列 $p$ 是否为 $k$-级排列的方法如下:首先构造一个长度为 $n-k+1$ 的数组 $s$,其中 $s_i = \sum_{j=i}^{i+k-1} p_j$,即第 $i$ 个元素等于 $p_i, p_{i+1}, \dots, p_{i+k-1}$ 的和。 如果 $\max(s) - \min(s) \le 1$,则该排列为 $k$-级排列。 请构造任意一个长度为 $n$ 的 $k$-级排列。

输入格式

输入的第一行为一个整数 $t$($1 \le t \le 10^4$),表示测试用例的数量。接下来每个测试用例占一行,每行包含两个整数 $n$ 和 $k$($2 \le k \le n \le 2 \cdot 10^5$,$k$ 为偶数),表示所需排列的长度 $n$。 保证所有测试用例中 $n$ 的总和不超过 $2 \cdot 10^5$。

输出格式

对于每个测试用例,输出任意一个长度为 $n$ 的 $k$-级排列。 保证在给定约束下,总是存在这样的排列。

说明/提示

示例第二个测试用例: - $p_1 + p_2 = 3 + 1 = 4$; - $p_2 + p_3 = 1 + 2 = 3$。 这些和的最大值为 $4$,最小值为 $3$。 由 ChatGPT 4.1 翻译