CF2145D Inversion Value of a Permutation

题目描述

长度为 $n$ 的排列是一个包含 $n$ 个整数的数组,其中每个 $1$ 到 $n$ 的数字恰好出现一次。对于一个排列 $p$,如果存在一对下标 $(i, j)$,满足 $i < j$ 且 $p_i > p_j$,则称 $(i, j)$ 是排列 $p$ 的一个逆序对。 对于排列 $p$,我们定义它的“逆序区间值”是:所有包含至少一个逆序对的子区间的数量。形式化地说,这等价于满足条件的整数对 $(l, r)$ 的个数($1 \leq l < r \leq n$),使得区间 $[l, r]$ 存在一对下标 $(i, j)$ 满足 $l \leq i < j \leq r$ 且 $p_i > p_j$。 例如,对于排列 $[3, 1, 4, 2]$,其逆序区间值为 $5$。 现给定两个整数 $n$ 和 $k$。请你构造一个长度为 $n$ 的排列,使其逆序区间值恰好等于 $k$。

输入格式

第一行包含一个整数 $t$($1 \leq t \leq 500$)——表示测试用例的数量。 接下来每个测试用例一行,包含两个整数 $n$ 和 $k$($2 \leq n \leq 30$;$0 \leq k \leq \dfrac{n(n-1)}{2}$)。

输出格式

对于每个测试用例,输出如下结果: - 如果不存在符合条件的排列,输出单个整数 $0$; - 否则,输出 $n$ 个两两不同、从 $1$ 到 $n$ 的整数,表示所构造的排列。若存在多种答案,输出任意一种均可。

说明/提示

由 ChatGPT 5 翻译