CF1992C.Gorilla and Permutation
入门
通过率:0%
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
Gorilla 和 Noobish_Monk 找到了三个数 n、m 和 k(m<k)。他们决定构造一个长度为 n 的排列†。
对于这个排列,Noobish_Monk 提出了如下函数:g(i) 表示排列前 i 个前缀中所有不大于 m 的数的和。类似地,Gorilla 提出了函数 f,其中 f(i) 表示排列前 i 个前缀中所有不小于 k 的数的和。长度为 i 的前缀是指原数组的前 i 个元素组成的子数组。
例如,如果 n=5,m=2,k=5,排列为 [5,3,4,1,2],则:
- f(1)=5,因为 5≥5;g(1)=0,因为 5>2;
- f(2)=5,因为 3<5;g(2)=0,因为 3>2;
- f(3)=5,因为 4<5;g(3)=0,因为 4>2;
- f(4)=5,因为 1<5;g(4)=1,因为 1≤2;
- f(5)=5,因为 2<5;g(5)=1+2=3,因为 2≤2。
请你帮助他们找到一个排列,使得 (∑i=1nf(i)−∑i=1ng(i)) 的值最大。
† 长度为 n 的排列是指由 1 到 n 的 n 个不同整数按任意顺序组成的数组。例如,[2,3,1,5,4] 是一个排列,但 [1,2,2] 不是排列(因为 2 出现了两次),[1,3,4] 也不是排列(因为 n=3,但 4 出现在数组中)。
输入格式
第一行包含一个整数 t(1≤t≤104),表示测试用例的数量。
每个测试用例一行,包含三个整数 n、m、k(2≤n≤105;1≤m<k≤n),分别表示要构造的排列的长度和两个整数。
保证所有测试用例中 n 的总和不超过 2⋅105。
输出格式
对于每个测试用例,输出一个排列——即满足题目条件的数列。如果有多组解,输出任意一组即可。
输入输出样例
输入#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。
由 ChatGPT 4.1 翻译
输入解题思路,AI测评打分。不知道怎么写?