Codeforces Round 867 (Div. 3)-D. Super-Permutation

news/2025/1/15 22:31:33/文章来源:https://www.cnblogs.com/matinalcosmos/p/18673837

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 \(b_i = (a_1 + a_2 +~\dots~+ a_i) \bmod n\).

A permutation of numbers \([a_1, a_2, \dots, a_n]\) is called a super-permutation if \([b_1 + 1, b_2 + 1, \dots, b_n + 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 \le t \le 10^4\)) — 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 \le n \le 2 \cdot 10^5\)) — the length of the desired(希望实现的) permutation.

The sum of \(n\) over all test cases does not exceed \(2 \cdot 10^5\).

输出格式

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
其中\(b_{i} = (a_{1} + a_2 + \dots + a_i)\bmod n\)
使得数组B和数组A均为1~n的全排列

输入

4
1
2
3
6

输出

1
2 1
-1
6 5 2 3 4 1

解题思路

1

\[b_{i} = (a_{1} + a_2 + \dots + a_i)\bmod n \tag{1} (i \geq 2) \]

\[b_{i - 1} = (a_{1} + a_2 + \dots + a_{i - 1})\bmod n \tag{2}(i \geq 2) \]

\((1)-(2)\)可得,

\[b_{i} = (b_{i - 1} + a_{i}) \bmod n \]

让数字k代表数字n在a数组排列中的位置,即\(a_k=n\). 当\(k>1\)时,

\[b_k = (b_{k - 1} + a_k) \bmod n = (b_{k - 1} + n) \bmod n = b_{k - 1} \]

\[b_k = b_{k - 1} \]

此时一定不是全排列。则k一定为1,即

\[a_1=n \]

\[b_1 = 0 \]

2

如果\(n\)为奇数,

\[b_{n} = (a_{1} + a_{2} + \dots + a_{n}) \bmod n \]

\[b_{n} = (1 + 2 + \dots + n) \bmod m = \frac{n(n+1)}{2} \bmod n = 0 = b_1 \]

此时也一定不会是全排列。因此n>1时只有n为偶数有可行方案

3

当n为偶数时,

\[a = [n,~1,~n-2,~3,~n-4,~5,~\dots,~n - 1,~2] \]

对应的

\[b = [0,~1,~n-1,~2,~n-2,~3,~n-3,~\dots,~\frac{n}{2}] \]

代码实现

#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;
}//Monotonousint main()
{ios_base::sync_with_stdio(false);cin.tie(nullptr);int t; cin >> t;while (t--){Solution();}return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/869813.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

并发编程 - 初识线程

线程是操作系统单独执行任务的最小单元,分前台和后台,有优先级,经历多个状态。C#可设置线程优先级和类型,控制线程状态的方法有Start、Sleep等,但Suspend和Abort已被弃用。多线程编程需通过同步机制控制线程执行。01、什么是线程? 要深刻理解什么是线程,就需要了解计算机…

Wgpu图文详解(05)纹理与绑定组

前言 什么是纹理? 纹理是图形渲染中用于增强几何图形视觉效果的一种资源。它是一个二维或三维的数据数组,通常包含颜色信息,但也可以包含其他类型的数据,如法线、高度、环境光遮蔽等。纹理的主要目的是为几何图形的表面提供详细的视觉效果,使其看起来更加真实和复杂。而我…

DeepSeek V3:AI 模型的游戏规则改变者

DeepSeek V3:AI 模型的游戏规则改变者 什么是DeepSeek V3? DeepSeekDeepSeek V3:AI 模型的游戏规则改变者什么是DeepSeek V3? DeepSeek V3是一款具有革命性的混合专家(MoE)模型,总参数达6710亿,每个标记激活370亿参数 。MoE方法允许多个专门模型(即“专家”)在门控网…

Opencv 的下载安装和VisualStudio配置

本文详细介绍了Windows系统下Opencv 的下载安装和VisualStudio配置过程。Opencv 的下载安装和VisualStudio配置 1 opencv-windows的下载 1.1 github直接下载链接(需要外网链接) 最新4.10.0版本的下载链接为: https://github.com/opencv/opencv/releases/download/4.10.0/openc…

G1原理—8.如何优化G1中的YGC

大纲 1.5千QPS的数据报表系统发生性能抖动的优化(停顿时间太小导致新生代上不去) 2.由于产生大量大对象导致系统吞吐量降低的优化(大对象太多频繁Mixed GC) 3.YGC其他相关参数优化之TLAB参数优化 4.YGC其他相关参数优化之RSet、PLAB和大对象的处理优化1.5千QPS的数据报表系统发…

【JavaSecLab靶场】Java综合漏洞平台

免责声明: 请勿利用文章内的相关技术从事非法测试,如因此产生的一切不良后果与作者无关。在我们平时的网络安全工作中,经常会面对各种各样的挑战。比如,进行定期的漏洞扫描、代码审计,甚至是参与红蓝对抗演练时,发现漏洞后往往需要及时将其修复。 最近,我接触到了一款开…

黑群晖最新安装方式|RR新手

引导盘制作 1、下载最新的黑群晖引导镜像原版链接:wjz304/rr 百度云盘:链接:https://pan.baidu.com/s/12z3v_kVYUDdWNzWBWN_NTQ?pwd=e67k2、将下载好的压缩包解压,得到一个后缀为img的文件。3、使用写盘工具Rufus将镜像文件写到u盘中,点击选择,找到解压好后缀为img的文件…

【Node.js渗透】安装与检测基于Electron的应用程序

免责声明: ⽂中所涉及的技术、思路和⼯具仅供以安全为⽬的的学习交流使⽤,任何⼈不得将其⽤于⾮法⽤途以及盈利等⽬的,否则后果⾃⾏承担。所有渗透都需获取授权!三、说明 传送门:【Node.js开发】Electron 框架介绍,我们已经了解了创建简单Electron应用程序的过程。 本文将…

器件选型---晶振

如何选型晶振,有那些选型注意事项器件选型---晶振 晶振的种类和区别 晶振大体可分为无源晶振和有源晶振两类,其区别如下:无源晶振(crystal,谐振器):内部是两侧贴着金属极板的石英晶体,必须要依赖外部电路才能进行稳定的震动;无源晶振一般会采取下面的接法来与MCU内部的…

Windows自定义变量打开文件或文件夹

前言全局说明Windows 系统自带很多变量,方便使用。 参照系统设置,我们可以自定义一些变量,快速打开文件或文件夹。 例如: 在运行或文件夹地址栏输入 %TEMP% 就能打开对应文件夹一、说明 1.1 环境: Windows 11 家庭版 23H2 22631.37371.2 环境变量位置 用户变量:自定义的文…

鼠标双击连击解决方案

前言 手里的这是第二个才用1年多就出现双击现象的G102了,太不耐操。我算是信了那群广告狗的邪,才又选了这个鼠标。 鼠标双击解决方法主要有以下几种:玄学方法:朝鼠标里哈一口气; 使用软件忽视短暂间隔内的点击行为; 拆鼠标,调整微动; 重买,选光微动+光手轮USB有线鼠标…

2024.1.15闲话

我抄,原!可能是不知道什么学习笔记捏 阶 使得 \(a^x\equiv 1\pmod m\) 的最小正整数 \(x\) 被称为 \(a\) 模 \(m\) 的阶,记作 \(\delta_m(a)\)。由欧拉定理可知, \(a\perp m\) 是 \(\delta_m(a)\) 存在的充要条件。证明 充分性:若 \(a\perp m\),根据欧拉定理,\(x=\varph…