翻译(机翻,AI修润)
查看原帖
翻译(机翻,AI修润)
642434
__DayLight__楼主2024/7/16 10:20

Gorilla and Permutation

题目描述

Gorilla 和 Noobish_Monk 找到了三个数 nn,mm 和 kk (m<km < k)。他们决定构造一个长度为 nn 的排列。

对于这个排列,Noobish_Monk 想出了以下函数:g(i)g(i) 是排列中前 ii 个不大于 mm 的数的和。类似地,Gorilla 想出了函数 ff,其中 f(i)f(i) 是排列中前 ii 个不小于 kk 的数的和。长度为 ii 的前缀是原始数组的前 ii 个元素组成的子数组。

例如,如果 n=5n = 5,m=2m = 2,k=5k = 5,排列是 [5,3,4,1,2][5, 3, 4, 1, 2],那么:

  • f(1)=5f(1) = 5,因为 5≥55 \ge 5;g(1)=0g(1) = 0,因为 5>25 > 2;
  • f(2)=5f(2) = 5,因为 3<53 < 5;g(2)=0g(2) = 0,因为 3>23 > 2;
  • f(3)=5f(3) = 5,因为 4<54 < 5;g(3)=0g(3) = 0,因为 4>24 > 2;
  • f(4)=5f(4) = 5,因为 1<51 < 5;g(4)=1g(4) = 1,因为 1≤21 \le 2;
  • f(5)=5f(5) = 5,因为 2<52 < 5;g(5)=1+2=3g(5) = 1 + 2 = 3,因为 2≤22 \le 2。

请帮助他们找到一个排列,使得 (∑i=1nf(i)−∑i=1ng(i))\left(\sum_{i=1}^n f(i) - \sum_{i=1}^n g(i)\right) 的值最大。

†^{\dagger} 长度为 nn 的排列是由 11 到 nn 的 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)。

输入格式

第一行包含一个整数 tt(1≤t≤1041 \le t \le 10^4)——测试用例的数量。

每个测试用例的唯一一行包含三个整数 nn,mm 和 kk(2≤n≤1052 \le n \le 10^5;1≤m<k≤n1 \le m < k \le n)——要构造的排列的大小和两个整数。

保证所有测试用例中 nn 的总和不超过 2⋅1052 \cdot 10^5。

输出格式

对于每个测试用例,输出一个排列——满足问题条件的一组数字。如果有多个解决方案,则输出其中任何一个。

样例 #1

样例输入 #1

3
5 2 5
3 1 3
10 3 8

样例输出 #1

5 3 4 1 2
3 2 1
10 9 8 4 7 5 6 1 2 3

提示

在第一个示例中,(∑i=1nf(i)−∑i=1ng(i))=5⋅5−(0⋅3+1+3)=25−4=21\left(\sum_{i=1}^n f(i) - \sum_{i=1}^n g(i)\right) = 5 \cdot 5 - (0 \cdot 3 + 1 + 3) = 25 - 4 = 21。

2024/7/16 10:20
加载中...