当前位置: 首页 > news >正文

P16414 【MX-X28-T3】「FAOI-R12」寄清梦 题解

比赛时遇到这种排列构造题,最优策略是打表找规律。

题目要求 \(p_i \oplus p_{i+1} > \mid p_i-p_{i+1}\mid\),撕烤什么时候不满足条件。由于异或是不进位加法,也是不退位减法,这里显然用后者,立即推出 \(p_i \oplus p_{i+1} \ge \mid p_i-p_{i+1}\mid\)。等号取到当且仅当 \(p_i\mid p_{i+1}=p_i\) 或者 \(p_i\mid p_{i+1}=p_{i+1}\)

然后进行构造:构造 \(n\) 的答案可以先构造 \(n-1\) 的答案。
你会发现 \(n=3\) 的时候会寄,但是 \(n=4\) 时可以用 \(4\) 来救场,插到 \(2\)\(3\) 之间,于是 \(n=4\) 时答案为 \(1,2,4,3\)
然后 \(n=7\) 时又寄了,无可救药,因为 \(7\) 的二进制表示为 \(111\),跟谁挨在一起都会导致不满足条件,同理 \(n=2^k-1\) 时都无解。
\(n=8\) 时又活了,可以将 \(8\) 放在 \(7\) 前面,满足条件。
于是可以大胆猜测答案是:$$1,2,4,3,5,6,8,7,9,10,12,11\cdots$$
那么又出现了一个问题: \(n=11\) 时呢?更进一步地,\(n\) 形如 \(4k+3\) 且有解时呢?这时还是有药可救的。首先 \(n\) 不能放在最后,那么与其相邻的两个数必须满足条件,且这两个数在 \(n\) 插入这两个数中间前相邻。如何求出这两个数呢?可以将 \(n\) 取反,再做一遍lowbit,得出的结果 \(x\) 一定满足条件,而 \(x+1\)\(x+2\) 也满足条件且一定相邻,取这两个数即可。

综上,\(n=2^k-1\) 时无解,\(n\) 为偶数或模 \(4\)\(1\) 时直接构造即可,\(n\) 形如 \(4k+3\) 时先构造 \(n-1\) 的答案,再把 \(n\) 插进去。

#include<bits/stdc++.h>
using namespace std;
#define ll long long
int T,n,a[100005];
int lowbit(int x){x=(~x);return x&(-x);
}
signed main(){ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);cin>>T;while(T--){cin>>n;if(n==1){cout<<"1\n";continue;}int x=log2(n+1);if((1<<x)==n+1){cout<<"-1\n";continue;}if(n%4==1||n%2==0){for(int i=1;i<=n;i++){if(i%4==1||i%4==2) a[i]=i;if(i%4==3) a[i]=i+1;if(i%4==0) a[i]=i-1;}for(int i=1;i<=n;i++) cout<<a[i]<<' ';cout<<'\n';}if(n%4==3){int y=lowbit(n);for(int i=1;i<n;i++){if(i%4==1||i%4==2) a[i]=i;if(i%4==3) a[i]=i+1;if(i%4==0) a[i]=i-1;				}for(int i=1;i<n;i++){cout<<a[i]<<' ';if(a[i]==y+1) cout<<n<<' ';}cout<<'\n';}}return 0;
}
http://www.jsqmd.com/news/750002/

相关文章:

  • 原神抽卡数据分析终极指南:免费开源工具完整使用教程
  • 亲测知网AIGC检测率降低方法!!!AI率95%->4%!
  • Reloaded-II下载卡顿终极解决指南:从卡死到流畅安装的完整教程
  • mT5训练效率翻倍秘籍:如何将Tatoeba千万级翻译数据预处理好并保存为.pt文件?
  • 2026 徐州上门黄金变现,福正美黄金奢饰品回收排名靠前 - 福正美黄金回收
  • 不止于‘Hello World’:用HBuilderX插件API打造你的第一个实用工具(消息通知实战)
  • 显卡驱动清理终极指南:Display Driver Uninstaller (DDU) 全面实战教程
  • SDIO驱动研究学习
  • tModLoader完全指南:打造专属泰拉瑞亚世界的终极模组平台
  • 2026年论文降AI率终极攻略:10款降ai率工具实测,慎选免费降ai率工具 - 降AI实验室
  • 2026年艺术设计类论文降AI工具推荐:设计类毕业论文降AI率知网通过完整实测指南
  • 短途配送车队离合器难题,频繁故障拖慢配送时效
  • 大语言模型安全对齐:核心挑战与工程实践
  • 3种方法轻松重置JetBrains IDE试用期,告别30天限制烦恼
  • Yudao项目中 Quartz 架构的使用方式
  • 如何在Linux上安装RTL8852BE驱动:Wi-Fi 6网卡终极解决方案
  • 从零开始使用 Taotoken 和 Python 开发你的第一个 AI 应用
  • 构建AI智能体技能栈:模块化设计与Claws/Hermes框架集成实践
  • 端侧推理:全面解析与深度洞察
  • 诚悦实验,靠谱的实验室智能化系统集成企业 - mypinpai
  • 2026年成都AI搜索优化公司TOP6深度评测报告,权威揭秘排名前十企业! - 品牌推荐官方
  • 实测AIGC率从100%降低到0%的指令和工具,2026年5月最新!
  • 崩坏星穹铁道自动化助手:三月七小助手技术解析与完整使用指南
  • 如何一键获取网易云无损音乐?这个开源工具让你拥有专业级音乐库
  • Python通达信数据获取终极指南:快速掌握股票量化分析利器
  • 零代码解放双手:用KeymouseGo实现鼠标键盘自动化录制的完整指南
  • 琪松摩托车驾校性价比高吗,收费透明吗 - mypinpai
  • 魔兽争霸3优化插件WarcraftHelper:如何让经典游戏在现代电脑上焕发新生
  • WarcraftHelper 2024终极配置指南:魔兽争霸3现代硬件优化方案
  • 观察 Taotoken 用量看板如何帮助优化提示工程与 token 消耗