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

OIFC 2025.11.21 模拟赛总结

快考 NOIP 了。

T1 构造题

题目描述

给定一个正整数 \(n\),请构造一个长度为 \(n\) 的排列 \(p\),满足 \(\forall i \in [1, n - 1]\)\(p_i \oplus p_{i + 1}\) 不是质数,或报告无解。

数据范围:\(1 \leq \sum n \leq 5 \times 10^6\)\(1 \leq T \leq 10^5\)

题解

如果两个数模 \(4\) 同余,则其二进制最后两位是一样的,因此这两个数异或结果是 \(4\) 的倍数!

因此,我们可以把 \(1 \sim n\) 分成 \(4\) 类,只需考虑如何合并这 \(4\) 类。

先说结论:假设 \(P_r(n)\) 表示 \([1, n]\)\(\bmod 4 = r\) 的数从小到大排序得到的序列,则构造:

\[rev(P_1(n)) + rev(P_3(n)) + P_2(n) + P_0(n) \]

合法。其中 \(rev\) 表示把整个序列翻转,即倒序。

简单证明一下:对于第一个 \(+\),显然 \(1\) 和大奇数异或是大偶数;对于第二个 \(+\),显然 \(3 \oplus 2 = 1\);对于第三个 \(+\),两个偶数异或一定得到偶数,而且当 \(n\) 足够大的时候,异或结果一定大于 \(2\),所以这样构造在 \(n\) 比较大的时候是正确的。

简单尝试一下,可以发现 \(n \geq 10\) 的时候可以直接这样构造。对于 \(n < 10\) 的情况,直接跑 dfs 暴搜即可。

参考代码:

#include<bits/stdc++.h>
#define int long long
using namespace std;
inline int read(){int x = 0, f = 1;char ch = getchar();while(!isdigit(ch)){if(ch == '-') f = -1;ch = getchar();}while(isdigit(ch)){x = (x << 1) + (x << 3) + (ch ^ 48);ch = getchar();}return x * f;
}
inline void write(int x){if(x < 0) putchar('-'), x = -x;if(x > 9) write(x / 10);putchar(x % 10 + '0');return;
}
signed main(){freopen("constructive.in", "r", stdin);freopen("constructive.out", "w", stdout);int T = read();while(T--){int n = read();if(n < 10){if(n == 1) puts("1");if(n == 2) puts("-1");if(n == 3) puts("-1");if(n == 4) puts("-1");if(n == 5) puts("1 5 3 2 4");if(n == 6) puts("-1");if(n == 7) puts("1 5 3 7 6 2 4");if(n == 8) puts("1 5 3 2 4 8 6 7");if(n == 9) puts("4 2 6 7 3 5 1 8 9");continue;}for(int i = n; i >= 1; i--) if(i % 4 == 1) write(i), putchar(' ');for(int i = n; i >= 1; i--) if(i % 4 == 3) write(i), putchar(' ');for(int i = 1; i <= n; i++) if(i % 4 == 2) write(i), putchar(' ');for(int i = 1; i <= n; i++) if(i % 4 == 0) write(i), putchar(' ');putchar('\n');}return 0;
}
http://www.jsqmd.com/news/46567/

相关文章:

  • 2025针阀式热流道厂家一览:技术特色与应用优势
  • g linux
  • 2025国内喷码机厂家排名综合实力榜
  • 【迅为工业RK3568稳定可靠】itop-3568开发板Linux驱动开发实战:RK3568内核模块符号导出详解
  • 虚幻基础:行为树 - 指南
  • 集成Win10+Win11优化工具 Windows Manager v2.2.1 绿色便携版!C盘经常红温清理方法
  • C语言`FILE`结构体 与 Python文件对象 的对比
  • 2025质量可靠的义乌刺绣工厂推荐下,厂家品质深度分析
  • 2025 11月十大靠谱启闭机品牌盘点推荐,螺杆启闭机、卷扬启闭机、手动启闭机、手电两用启闭机 优势及应用分析
  • 推荐几家靠谱的刺绣厂家电话,2025刺绣厂家实力解析
  • 虚拟机共享文件夹实现自动挂载
  • 目标检测算法——R-CNN系列
  • 如何助力质量人员提高工作效率与绩效—供应商质量评审
  • 每周读书与学习-JMeter性能测试脚本编写实战(一)-如何实现用户需先登录,然后再请求别的接口
  • 详细介绍:【iOS】自动引用计数(一)
  • 时序数据库选型指南:为什么TDengine正在成为行业标准
  • 专业的技术文档 | Apache Pulsar 如何满足金融级的容灾场景
  • 通用型质量管理SaaS平台的构建逻辑与市场实践‌
  • SBDAF60V3-ASEMI可直接替代安世PMEG6030EP
  • Ubuntu 框架使用 Docker 部署 Jenkins 详细教程
  • function sql的错误处理方法
  • function sql的示例代码有哪些
  • 【CI130x 离在线】 C++一个类中调用另一个类的方法
  • ERP/MES与QMS的协同价值:为什么企业需要专业质量管理系统的深度解析
  • PostgreSQL技术大讲堂 - 第111讲:浅谈向量数据库pgvector的使用
  • 人大金仓kingbase数据库大小写敏感设置
  • 详细介绍:数据结构八大排序:堆排序-从二叉树到堆排序实现
  • 2025年11月最新推荐!云南旅游旅行社口碑排行榜权威发布,帮你选靠谱服务商避坑指南
  • 大企业数字化项目失败困局与破局之道
  • 2025年11月新推荐!云南旅游旅行社口碑排行榜,权威榜单助选靠谱服务商