CF1716B.Permutation Chain
入门
通过率:0%
时间限制:2.00s
内存限制:256MB
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
A permutation of length n is a sequence of integers from 1 to n such that each integer appears in it exactly once.
Let the fixedness of a permutation p be the number of fixed points in it — the number of positions j such that pj=j, where pj is the j-th element of the permutation p.
You are asked to build a sequence of permutations a1,a2,…, starting from the identity permutation (permutation a1=[1,2,…,n]). Let's call it a permutation chain. Thus, ai is the i-th permutation of length n.
For every i from 2 onwards, the permutation ai should be obtained from the permutation ai−1 by swapping any two elements in it (not necessarily neighboring). The fixedness of the permutation ai should be strictly lower than the fixedness of the permutation ai−1.
Consider some chains for n=3:
- a1=[1,2,3], a2=[1,3,2] — that is a valid chain of length 2. From a1 to a2, the elements on positions 2 and 3 get swapped, the fixedness decrease from 3 to 1.
- a1=[2,1,3], a2=[3,1,2] — that is not a valid chain. The first permutation should always be [1,2,3] for n=3.
- a1=[1,2,3], a2=[1,3,2], a3=[1,2,3] — that is not a valid chain. From a2 to a3, the elements on positions 2 and 3 get swapped but the fixedness increase from 1 to 3.
- a1=[1,2,3], a2=[3,2,1], a3=[3,1,2] — that is a valid chain of length 3. From a1 to a2, the elements on positions 1 and 3 get swapped, the fixedness decrease from 3 to 1. From a2 to a3, the elements on positions 2 and 3 get swapped, the fixedness decrease from 1 to 0.
Find the longest permutation chain. If there are multiple longest answers, print any of them.
长度为 n 的一个排列是指由 1 到 n 的整数组成的序列,其中每个整数恰好出现一次。
定义一个排列 p 的**不动点数(fixedness)**为该排列中不动点的个数——即满足 pj=j 的位置 j 的个数,其中 pj 表示排列 p 的第 j 个元素。
你需要构造一个排列序列 a1,a2,…,起始于恒等排列(即 a1=[1,2,…,n])。我们称其为一个排列链(permutation chain)。因此,ai 是长度为 n 的第 i 个排列。
对每个 i≥2,排列 ai 必须由排列 ai−1 通过交换其中任意两个元素(不一定是相邻元素)得到;且 ai 的不动点数必须严格小于 ai−1 的不动点数。
考虑 n=3 的一些例子:
- a1=[1,2,3],a2=[1,3,2] —— 这是一个长度为 2 的合法链。从 a1 到 a2,位置 2 和 3 上的元素被交换,不动点数从 3 减少到 1。
- a1=[2,1,3],a2=[3,1,2] —— 这不是一个合法链。对于 n=3,第一个排列必须始终是 [1,2,3]。
- a1=[1,2,3],a2=[1,3,2],a3=[1,2,3] —— 这不是一个合法链。从 a2 到 a3,位置 2 和 3 上的元素被交换,但不动点数从 1 增加到了 3。
- a1=[1,2,3],a2=[3,2,1],a3=[3,1,2] —— 这是一个长度为 3 的合法链。从 a1 到 a2,位置 1 和 3 上的元素被交换,不动点数从 3 减少到 1;从 a2 到 a3,位置 2 和 3 上的元素被交换,不动点数从 1 减少到 0。
请找出最长的排列链。如果存在多个最长的链,输出任意一个即可。
输入格式
The first line contains a single integer t (1≤t≤99) — the number of testcases.
The only line of each testcase contains a single integer n (2≤n≤100) — the required length of permutations in the chain.
第一行包含一个整数 t(1≤t≤99)—— 测试用例的数量。
每个测试用例仅有一行,包含一个整数 n(2≤n≤100)—— 所需链中排列的长度。
输出格式
For each testcase, first, print the length of a permutation chain k.
Then print k permutations a1,a2,…,ak. a1 should be an identity permutation of length n ([1,2,…,n]). For each i from 2 to k, ai should be obtained by swapping two elements in ai−1. It should also have a strictly lower fixedness than ai−1.
对于每个测试用例,首先输出一个排列链的长度 k。
然后输出 k 个排列 a1,a2,…,ak。其中 a1 应为长度为 n 的单位排列(即 [1,2,…,n])。对每个从 2 到 k 的 i,ai 应通过交换 ai−1 中的两个元素得到,且其固定点数(fixedness)必须严格小于 ai−1 的固定点数。
输入输出样例
输入#1
2 2 3
输出#1
2 1 2 2 1 3 1 2 3 3 2 1 3 1 2
输入解题思路,AI测评打分。不知道怎么写?