CF1770B.Koxia and Permutation

入门

通过率:0%

时间限制:1.00s

内存限制:256MB

AC君温馨提醒

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

题目描述

Reve has two integers nn and kk.

Let pp be a permutation^\dagger of length nn. Let cc be an array of length nk+1n - k + 1 such that $$c_i = \max(p_i, \dots, p_{i+k-1}) + \min(p_i, \dots, p_{i+k-1}).$$ Let the cost of the permutation pp be the maximum element of cc.

Koxia wants you to construct a permutation with the minimum possible cost.

^\dagger A permutation of length nn is an array consisting of nn distinct integers from 11 to nn in arbitrary order. For example, [2,3,1,5,4][2,3,1,5,4] is a permutation, but [1,2,2][1,2,2] is not a permutation (22 appears twice in the array), and [1,3,4][1,3,4] is also not a permutation (n=3n=3 but there is 44 in the array).

Reve 有两个整数 nnkk

pp 是一个长度为 nn 的排列^\dagger。定义数组 cc,其长度为 nk+1n - k + 1,且满足

c_i=max(p_i,,p_i+k1)+min(p_i,,p_i+k1).c\_i = \max(p\_i, \dots, p\_{i+k-1}) + \min(p\_i, \dots, p\_{i+k-1}).

称排列 pp代价为数组 cc 中的最大元素。

Koxia 希望你构造一个具有最小可能代价的排列。

^\dagger 长度为 nn 的排列是指由 11nn 中互不相同的 nn 个整数组成的任意顺序的数组。例如,[2,3,1,5,4][2,3,1,5,4] 是一个排列,但 [1,2,2][1,2,2] 不是排列(数字 22 在数组中出现了两次),[1,3,4][1,3,4] 也不是排列(此时 n=3n=3,但数组中包含了 44)。

输入格式

Each test consists of multiple test cases. The first line contains a single integer tt (1t20001 \leq t \leq 2000) — the number of test cases. The description of test cases follows.

The first line of each test case contains two integers nn and kk (1kn21051 \leq k \leq n \leq 2 \cdot 10^5).

It is guaranteed that the sum of nn over all test cases does not exceed 21052 \cdot 10^5.

每个测试包含多个测试用例。第一行包含一个整数 tt1t20001 \leq t \leq 2000),表示测试用例的数量。随后是各测试用例的描述。

每个测试用例的第一行包含两个整数 nnkk1kn21051 \leq k \leq n \leq 2 \cdot 10^5)。

保证所有测试用例的 nn 值之和不超过 21052 \cdot 10^5

输出格式

For each test case, output nn integers p1,p2,,pnp_1,p_2,\dots,p_n, which is a permutation with minimal cost. If there is more than one permutation with minimal cost, you may output any of them.

对于每个测试用例,输出 nn 个整数 p1,p2,,pnp_1,p_2,\dots,p_n,它们构成一个代价最小的排列。如果存在多个代价最小的排列,你可以输出其中任意一个。

输入输出样例

  • 输入#1

    3
    5 3
    5 1
    6 6

    输出#1

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

说明/提示

In the first test case,

  • c1=max(p1,p2,p3)+min(p1,p2,p3)=5+1=6c_1 = \max(p_1,p_2,p_3) + \min(p_1,p_2,p_3) = 5 + 1 = 6.
  • c2=max(p2,p3,p4)+min(p2,p3,p4)=3+1=4c_2 = \max(p_2,p_3,p_4) + \min(p_2,p_3,p_4) = 3 + 1 = 4.
  • c3=max(p3,p4,p5)+min(p3,p4,p5)=4+2=6c_3 = \max(p_3,p_4,p_5) + \min(p_3,p_4,p_5) = 4 + 2 = 6.

Therefore, the cost is max(6,4,6)=6\max(6,4,6)=6. It can be proven that this is the minimal cost.

在第一个测试用例中,

  • c1=max(p1,p2,p3)+min(p1,p2,p3)=5+1=6c_1 = \max(p_1,p_2,p_3) + \min(p_1,p_2,p_3) = 5 + 1 = 6
  • c2=max(p2,p3,p4)+min(p2,p3,p4)=3+1=4c_2 = \max(p_2,p_3,p_4) + \min(p_2,p_3,p_4) = 3 + 1 = 4
  • c3=max(p3,p4,p5)+min(p3,p4,p5)=4+2=6c_3 = \max(p_3,p_4,p_5) + \min(p_3,p_4,p_5) = 4 + 2 = 6

因此,总代价为 max(6,4,6)=6\max(6,4,6)=6。可以证明这是最小代价。

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

首页