CF1951F.Inversion Composition

省选/NOI-

通过率:0%

AC君温馨提醒

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

题目描述

My Chemical Romance - Disenchanted

ඞ

给定一个长度为 nn 的排列 pp,以及一个非负整数 kk。你需要构造一个长度为 nn 的排列 qq,使得 inv⁡(q)+inv⁡(q⋅p)=k†‡\operatorname{inv}(q) + \operatorname{inv}(q \cdot p) = k {}^\dagger {}^\ddagger,或者判断是否无法做到。

†{}^\dagger 对于两个长度为 nn 的排列 pp 和 qq,排列 w=q⋅pw = q \cdot p 满足 wi=qpiw_i = q_{p_i},对于所有 1≤i≤n1 \le i \le n。

‡{}^\ddagger 对于长度为 nn 的排列 pp,函数 inv⁡(p)\operatorname{inv}(p) 表示 pp 的逆序对数,即满足 1≤i<j≤n1 \le i < j \le n 且 pi>pjp_i > p_j 的数对 (i,j)(i, j) 的数量。

输入格式

每组测试数据包含多组测试用例。第一行包含一个整数 tt(1≤t≤1041 \le t \le 10^4),表示测试用例的数量。接下来是每组测试用例的描述。

每组测试用例的第一行包含两个整数 nn 和 kk(1≤n≤3⋅105,0≤k≤n(n−1)1 \le n \le 3 \cdot 10^5, 0 \le k \le n(n - 1)),分别表示排列 pp 的长度和目标逆序对数。

第二行包含 nn 个整数 p1,p2,…,pnp_1, p_2, \ldots, p_n(1≤pi≤n1 \le p_i \le n,pip_i 两两不同),表示给定的排列 pp。

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

输出格式

对于每组测试用例,如果存在满足条件的排列 qq,输出一行 "YES"。否则输出一行 "NO"。

如果答案为 "YES",则在下一行输出 nn 个整数 q1,q2,…,qnq_1, q_2, \ldots, q_n,表示满足条件的排列 qq。如果有多种方案,输出任意一种即可。

输入输出样例

  • 输入#1

    5
    3 4
    2 3 1
    5 5
    2 3 5 1 4
    6 11
    5 1 2 3 4 6
    9 51
    3 1 4 2 5 6 7 8 9
    1 0
    1

    输出#1

    YES
    3 2 1
    NO
    NO
    YES
    1 5 9 8 7 6 4 3 2
    YES
    1

说明/提示

在第一个测试用例中,有 q⋅p=[2,1,3]q \cdot p = [2, 1, 3],inv⁡(q)=3\operatorname{inv}(q) = 3,inv⁡(q⋅p)=1\operatorname{inv}(q \cdot p) = 1。

在第四个测试用例中,有 q⋅p=[9,1,8,5,7,6,4,3,2]q \cdot p = [9, 1, 8, 5, 7, 6, 4, 3, 2],inv⁡(q)=24\operatorname{inv}(q) = 24,inv⁡(q⋅p)=27\operatorname{inv}(q \cdot p) = 27。

由 ChatGPT 4.1 翻译

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

首页