Codeforces Round 867 (Div. 3)-D. Super-Permutation
Codeforces 题解 - [Codeforces Round 867 (Div. 3)-D. Super-Permutation]
题目描述
A permutation is a sequence n integers, where each integer from 1 to n appears exactly once. For example, [1], [3,5,2,1,4], [1,3,2] are permutations, while [2,3,2], [4,3,1], [0] are not.
Given a permutation a, we construct(构造) an array b, where bi=(a1+a2+ … +ai)modn.
A permutation of numbers [a1,a2,…,an] is called a super-permutation if [b1+1,b2+1,…,bn+1] is also a permutation of length n.
Grisha became interested whether a super-permutation of length n exists. Help him solve this non-trivial(重要的) problem. Output any super-permutation of length n, if it exists. Otherwise(不然), output −1.
输入格式
The first line contains a single integer t (1≤t≤104) — the number of test cases. The description of the test cases follows.
Each test case consists of a single line containing one integer n (1≤n≤2⋅105) — the length of the desired(希望实现的) permutation.
The sum of n over all test cases does not exceed 2⋅105.
输出格式
For each test case, output in a separate line:
- n integers — a super-permutation of length n, if it exists.
- −1, otherwise.
If there are several suitable permutations, output any of them.
题目大意
构造一个数组A
其中bi=(a1+a2+⋯+ai)modn
使得数组B和数组A均为1~n的全排列
输入
4
1
2
3
6
输出
1
2 1
-1
6 5 2 3 4 1
解题思路
1
由(1)−(2)可得,
让数字k代表数字n在a数组排列中的位置,即ak=n. 当k>1时,
即
此时一定不是全排列。则k一定为1,即
则
2
如果n为奇数,
此时也一定不会是全排列。因此n>1时只有n为偶数有可行方案
3
当n为偶数时,
对应的
代码实现
#include "bits/stdc++.h"
using namespace std;
void Solution()
{
int n; cin >> n;
if(n == 1) { cout << 1 << '\n'; return; }
if (n & 1) { cout << -1 << '\n'; return; }
for(int i = 1;i <= n;++i)
{
if(i & 1)
{
cout << n - i + 1 << ' ';
}
else
{
cout << i - 1 << ' ';
}
}
cout << '\n';
return;
}//Monotonous
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(nullptr);
int t; cin >> t;
while (t--)
{
Solution();
}
return 0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)