CF1473C.No More Inversions
普及/提高-
通过率:0%
时间限制:2.00s
内存限制:256MB
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
You have a sequence a with n elements 1,2,3,…,k−1,k,k−1,k−2,…,k−(n−k) (k≤n<2k).
Let's call as inversion in a a pair of indices i<j such that a[i]>a[j].
Suppose, you have some permutation p of size k and you build a sequence b of size n in the following manner: b[i]=p[a[i]].
Your goal is to find such permutation p that the total number of inversions in b doesn't exceed the total number of inversions in a, and b is lexicographically maximum.
Small reminder: the sequence of k integers is called a permutation if it contains all integers from 1 to k exactly once.
Another small reminder: a sequence s is lexicographically smaller than another sequence t, if either s is a prefix of t, or for the first i such that si=ti, si<ti holds (in the first position that these sequences are different, s has smaller number than t).
你有一个长度为 n 的序列 a,其元素为 1,2,3,…,k−1,k,k−1,k−2,…,k−(n−k)(其中 k≤n<2k)。
我们称 a 中的一个逆序对为满足 i<j 且 a[i]>a[j] 的下标对 (i,j)。
假设你有一个大小为 k 的排列 p,并按如下方式构造一个长度为 n 的序列 b:b[i]=p[a[i]]。
你的目标是找出一个排列 p,使得 b 中的逆序对总数不超过 a 中的逆序对总数,且 b 在字典序上尽可能大。
小提示:若一个包含 k 个整数的序列恰好包含从 1 到 k 的每个整数一次,则称其为一个排列。
另一个小提示:若序列 s 比序列 t 字典序更小,则满足以下条件之一:s 是 t 的前缀;或存在第一个下标 i 使得 si=ti,且 si<ti(即在两序列首次出现差异的位置上,s 的对应元素小于 t 的对应元素)。
输入格式
The first line contains a single integer t (1≤t≤1000) — the number of test cases.
The first and only line of each test case contains two integers n and k (k≤n<2k; 1≤k≤105) — the length of the sequence a and its maximum.
It's guaranteed that the total sum of k over test cases doesn't exceed 105.
第一行包含一个整数 t(1≤t≤1000)—— 测试用例的数量。
每个测试用例的第一行(也是唯一一行)包含两个整数 n 和 k(k≤n<2k;1≤k≤105)—— 序列 a 的长度及其最大值。
保证所有测试用例中 k 的总和不超过 105。
输出格式
For each test case, print k integers — the permutation p which maximizes b lexicographically without increasing the total number of inversions.
It can be proven that p exists and is unique.
对于每个测试用例,输出 k 个整数——即在不增加总逆序对数的前提下,使得序列 b 的字典序最大的排列 p。
可以证明,这样的排列 p 存在且唯一。
输入输出样例
输入#1
4 1 1 2 2 3 2 4 3
输出#1
1 1 2 2 1 1 3 2
说明/提示
In the first test case, the sequence a=[1], there is only one permutation p=[1].
In the second test case, the sequence a=[1,2]. There is no inversion in a, so there is only one permutation p=[1,2] which doesn't increase the number of inversions.
In the third test case, a=[1,2,1] and has 1 inversion. If we use p=[2,1], then b=[p[a[1]],p[a[2]],p[a[3]]]=[2,1,2] and also has 1 inversion.
In the fourth test case, a=[1,2,3,2], and since p=[1,3,2] then b=[1,3,2,3]. Both a and b have 1 inversion and b is the lexicographically maximum.
在第一个测试用例中,序列 a=[1],仅存在一个排列 p=[1]。
在第二个测试用例中,序列 a=[1,2]。a 中不存在逆序对,因此仅存在一个排列 p=[1,2],它不会使逆序对数量增加。
在第三个测试用例中,a=[1,2,1],包含 1 个逆序对。若取 p=[2,1],则 b=[p[a[1]],p[a[2]],p[a[3]]]=[2,1,2],同样包含 1 个逆序对。
在第四个测试用例中,a=[1,2,3,2],取 p=[1,3,2],则 b=[1,3,2,3]。a 和 b 均恰好有 1 个逆序对,且 b 是字典序最大的序列。
输入解题思路,AI测评打分。不知道怎么写?