C2. XOR-convenience (Hard Version)

news/2026/1/25 12:24:38/文章来源:https://www.cnblogs.com/onlyblues/p/19529156

C2. XOR-convenience (Hard Version)

This is the hard version of the problem. The difference between the versions is that in this version, $1 \le i \le n-1$. Note that a correct solution for the hard version is not necessarily a correct solution for the easy version.

Given a positive integer $n$. Find some permutation$^{\text{∗}}$ $p$ of length $n$ such that for every $i$ ($\style{color:red}{1 \le i \le n-1}$) there exists $j$ ($\style{color:red}{i \le j \le n}$) such that $p_i = p_j \oplus i$ $^{\text{†}}$, or determine that it does not exist.

$^{\text{∗}}$A permutation of length $n$ is an array consisting of $n$ distinct integers from $1$ to $n$ in arbitrary order. For example, $[2,3,1,5,4]$ is a permutation, but $[1,2,2]$ is not a permutation ($2$ appears twice in the array), and $[1,3,4]$ is also not a permutation ($n=3$ but there is $4$ in the array).

$^{\text{†}}$$\oplus$ denotes the bitwise XOR operation.

Input

Each test contains multiple test cases. The first line contains the number of test cases $t$ ($1 \le t \le 10^4$). The description of the test cases follows.

The only line of each test case contains one positive integer $n$ ($3 \leq n \leq 2 \cdot 10^5$) — the length of the permutation.

It is guaranteed that the sum of $n$ over all test cases does not exceed $2\cdot 10^5$.

Output

For each test case, if there is a suitable permutation, output $n$ integers $p_1,p_2,\ldots,p_n$ — the permutation $p$. Otherwise, output $-1$.

If multiple solutions exist, output any of them.

Example

Input

2
3
4

Output

2 1 3
-1

Note

In the first test case, the permutation $p = [2,1,3]$ fulfills the condition, as $p_2 = 1$ and $p_3 \oplus 2 = 1$.

In the second test case, there is no suitable permutation.

 

解题思路

  纯电波题。虽然 Easy Version 与 Hard Version 是两道不同的题,但 Easy Version 的构造思路对 Hard Version 有很强的启发意义,因此先讲一下 Easy Version 的做法。

  条件 $p_i = p_j \oplus i$ 等价于 $p_i \oplus i = p_j$。直觉上可能会猜:能否让每个 $p_i \oplus i \left(2 \leq i < n\right)$ 都等于同一个值,然后把这个值放在 $p_n$ 的位置上。于是会尝试把这个公共值设为 $1$ 或 $n$ 这样特殊值。然后就是惊人的注意力发力了,注意到 $2k \oplus (2k+1) = 1 \left(k \in \mathbb{N}\right)$,这意味着可以尝试将 $p_n$ 定为 $1$。

  具体的构造方法是从自然排列 $p_i = i$ 开始,对于 $i = 2, 4, 6, \dots$ 这些偶数位置,向后和下一个位置交换,即把相邻两个数两两交换。这样处理后,对于 $i \in [2, n-1]$ 的位置,会有:

  • 当 $i$ 为偶数时,有 $p_i = i+1$,$p_i \oplus i = (i+1) \oplus i = 1$。
  • 当 $i$ 为奇数时,有 $p_i = i-1$,$p_i \oplus i = (i-1) \oplus i = 1$。

  于是所有的 $p_i \oplus i \left(2 \leq n-1 \right)$ 都等于 $1$。此时 $p_1=1$,而 $p_n$ 的值根据 $n$ 的奇偶性分为:当 $n$ 为偶数时,$p_n = n$;当 $n$ 为奇数时,$p_n = n - 1$。最后再把 $p_1$ 和 $p_n$ 交换,就得到了 $p_n=1$。

  然后是 Hard Version,需要额外处理 $i=1$ 的情况。当 $n$ 为奇数时,上述构造仍然是合法的。因为交换后 $p_1 = n-1$,而 $(n-1) \oplus 1 = n$,而根据前面的交换规律,$p_{n-1} = n$,刚好可以取 $j = n-1$。

  当 $n$ 为偶数时。如果直接沿用上述构造方法,由于交换 $p_1$ 和 $p_n$ 后得到 $p_1 = n$,于是 $p_1 \oplus 1 = n \oplus 1 = n+1$,而 $n+1 > n$ 不存在于排列中,导致 $i=1$ 无解。然后依旧是惊人的注意力,当 $n$ 是 $2$ 的整数次幂,即 $n=2^k \left( k \in \mathbb{N} \right)$ 时,无解。可根据 $n$ 所在的位置来讨论:

  • 当 $p_n = n$,则为了满足 $i=n-1$,需要 $p_{n-1} = n \oplus (n-1)$。但 $n \oplus (n-1) = 2n - 1 > n$,而 $p_{n-1} < n$,矛盾。
  • 当 $p_i = n \left(1 \leq i < n\right)$,则 $p_i \oplus i = n + i > n$,而 $p_j < n \left(i < j \leq n\right)$,也找不到这样的值,矛盾。

  接下来考虑 $n$ 为偶数但不是 $2$ 的次幂的情况,此时一定存在合法构造。令 $k = \lfloor \log_2 n \rfloor$,即 $n$ 在二进制下的最高位。$r = n \bmod 2^k$,即除最高位外其余位构成的值(由于 $n$ 不是 $2$ 的次幂,$r \ge 2$ 且为偶数)。这样有 $n = 2^k + r$。合法构造思路是:在 Easy Version 构造的基础上,再额外交换一次 $p_1$ 和 $p_r$。

  具体来说,在得到 Easy Version 构造方案后,此时 $p_1 = n$,$p_r = r+1$。然后再把 $p_1$ 和 $p_r$ 交换,得到 $p_1 = r+1$,$p_r = n$。

  • 对于 $i=1$,$p_1 \oplus 1 = (r+1) \oplus 1 = r < n$,由于 $p_{r+1} = r$,所以存在 $j = r+1$ 使得 $p_1 \oplus 1 = p_j$。
  • 对于 $i=r$,$p_r \oplus r = n \oplus r = 2^k > r$,由于 $2^k + 1 < n$ 且 $p_{2^k + 1} = 2^k$,所以存在 $j = 2^k + 1$ 使得 $p_r \oplus r = p_j$。

  其余的 $i \in [2,n-1]$(不包括 $i=r$)的位置仍然保持 $p_i \oplus i = 1$,而 $p_n = 1$,因此仍满足条件。

  至于该构造方法是怎么想到的,评价是有惊人的注意力就行了。

  AC 代码如下,时间复杂度为 $O(n)$:

#include <bits/stdc++.h>
using namespace std;typedef long long LL;const int N = 2e5 + 5;int p[N];void solve() {int n;cin >> n;iota(p + 1, p + n + 1, 1);if (!(n - 1 & n)) {cout << "-1\n";return;}for (int i = 2; i < n; i += 2) {swap(p[i], p[i + 1]);}swap(p[1], p[n]);if (~n & 1) swap(p[1], p[n % (1 << __lg(n))]);for (int i = 1; i <= n; i++) {cout << p[i] << ' ';}cout << '\n';
}int main() {ios::sync_with_stdio(false);cin.tie(nullptr);int t;cin >> t;while (t--) {solve();}return 0;
}

 

参考资料

  Codeforces Round 1075 (Div. 2) Editorial:https://codeforces.com/blog/entry/150452

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

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

相关文章

2026年贵州地区优质岩石钻机供应商盘点与推荐

一、摘要 随着贵州省基础设施建设的持续深入,特别是山地隧道、桥梁桩基、矿山开采等工程的蓬勃发展,市场对高性能、高可靠性的岩石钻机需求日益旺盛。面对众多供应厂家,如何选择一家技术过硬、服务到位的合作伙伴,…

2026年行业内优秀的换热器源头厂家推荐,侧吹风幕机/电加热暖风机/工业风幕机/换热器/供暖设备,换热器生产厂家排行

行业洞察:换热器市场的技术革新与需求升级 随着全球工业4.0进程加速及绿色建筑标准的提升,空调换热器作为暖通系统的核心部件,正面临能效升级、场景适配及定制化服务的多重挑战。据第三方机构统计,2025年全球换热器…

速降控必追!2025浙江山地速降基地口碑榜单,山地车骑行/山地车/乡村骑行/山地速降,山地速降旅游打卡点哪家好

随着全民健身热潮与户外运动市场的蓬勃发展,山地速降作为融合极限挑战与自然体验的细分领域,正迎来黄金增长期。据《2024中国山地运动产业白皮书》显示,浙江省凭借丰富的山地资源与政策扶持,已成为全国速降运动的核…

2026年合肥低温肉制品优质供应商深度测评与选型指南

进入2026年,中国低温肉制品行业在消费升级与健康理念的双重驱动下,正经历从“量”到“质”的深刻变革。合肥作为长三角重要的副中心城市,其餐饮、团餐及零售市场对高品质、高安全性的低温肉制品需求持续旺盛。行业的…

python3.x打开自带文档

python3.x打开自带文档python -m pydoc -b

2025年国产光纤滑环品牌竞争力排行榜,导电环/过孔导电滑环/帽式滑环/滑环定制/气电滑环/气滑环,光纤滑环生产商推荐榜

随着工业4.0与智能装备产业的快速发展,光纤滑环作为高精度数据传输的核心部件,市场需求持续攀升。然而,国内市场呈现“头部企业技术领先、中小厂商价格内卷”的分化格局,产品质量参差不齐、技术标准模糊等问题日益…

2026年六安适合艺术生的音乐高考培训排名,合肥东辰职业学校排前列

2026年艺术教育赛道持续升温,音乐高考培训已成为艺体生冲刺理想院校的关键支撑。无论是教学方法的科学性、课程体系的适配性,还是升学成果的稳定性,优质培训机构的专业能力直接决定艺术生的备考效率与升学概率。当前…

【Django毕设全套源码+文档】基于Django的全国民宿信息管理系统设计与实现(丰富项目+远程调试+讲解+定制)

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

【Django毕设全套源码+文档】基于Django的大数据的应届生求职系统设计与实现(丰富项目+远程调试+讲解+定制)

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

【Django毕设全套源码+文档】基于Django框架学习资源推送系统设计与实现(丰富项目+远程调试+讲解+定制)

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

【Django毕设全套源码+文档】基于Django的二手电子设备交易平台设计与开发(丰富项目+远程调试+讲解+定制)

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

【Django毕设全套源码+文档】基于Django的个性化餐饮管理系统的设计与实现(丰富项目+远程调试+讲解+定制)

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

【Django毕设全套源码+文档】基于python的学生考勤管理系统的设计与实现(丰富项目+远程调试+讲解+定制)

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

【Django毕设全套源码+文档】基于Python的可视化学习系统设计与实现(丰富项目+远程调试+讲解+定制)

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

【Django毕设全套源码+文档】django基于协同过滤的音乐推荐系统的设计与实现(丰富项目+远程调试+讲解+定制)

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

成都专业清洁工具厂商综合实力盘点与选择建议

一、行业背景与市场趋势 随着城市化进程的加速和公众对环境卫生要求的不断提高,商业与家庭清洁领域正迎来新一轮的发展机遇。特别是在成都这样的新一线城市,酒店、写字楼、商场、学校、工厂及高端住宅区的密集建设,…

2026汽车贴膜优选指南:哪些店铺服务更贴心?,改色膜/玻璃膜/汽车膜/沈北车衣/汽车车衣/车衣改色,汽车贴膜团队哪家好

近年来,随着汽车保有量持续增长与车主个性化需求的提升,汽车贴膜市场迎来爆发式增长。从隔热防晒到车漆保护,从色彩定制到隐私防护,贴膜服务已成为汽车后市场的重要细分领域。然而,市场快速扩张的背后,也暴露出技…

零基础鸿蒙应用开发第三十四节:MVVM架构下的商品管理登录页 - 鸿蒙

零基础鸿蒙应用开发学习计划表 【学习目标】掌握鸿蒙工程化开发的核心规范:静态工具类的统一导入与使用,单例模式ViewModel的设计与应用(核心服务于MVVM分层解耦); 深刻理解MVVM分层核心思想:明确数据模型(Mode…

零基础鸿蒙应用开发第三十二节:JSON核心基础与文件的读写 - 鸿蒙

零基础鸿蒙应用开发学习计划表 【学习目标】掌握 JSON 的核心结构、数据类型与语法规则,能独立编写合法的 JSON 数据; 熟练运用 ArkTS 内置 JSON 模块,实现对象与 JSON 字符串的序列化/反序列化; 掌握鸿蒙应用中本…

中文通用语音识别新标杆,Paraformer大模型实测表现

中文通用语音识别新标杆&#xff0c;Paraformer大模型实测表现 语音识别技术正从“能听懂”迈向“听得准、识得精、用得稳”的新阶段。在中文语音识别领域&#xff0c;阿里达摩院推出的Paraformer系列模型已悄然成为行业事实标准——它不靠堆算力&#xff0c;而以创新的非自回…