当前位置: 首页 > 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.gsyq.cn/news/56252.html

相关文章:

  • g linux
  • fuse linux
  • 虚幻基础:行为树 - 指南
  • C语言`FILE`结构体 与 Python文件对象 的对比
  • 虚拟机共享文件夹实现自动挂载
  • 专业的技术文档 | Apache Pulsar 如何满足金融级的容灾场景
  • PostgreSQL技术大讲堂 - 第111讲:浅谈向量数据库pgvector的使用
  • 人大金仓kingbase数据库大小写敏感设置
  • 2025年11月最新推荐!云南旅游旅行社口碑排行榜权威发布,帮你选靠谱服务商避坑指南
  • 2025年11月新推荐!云南旅游旅行社口碑排行榜,权威榜单助选靠谱服务商
  • 2025 年 11 月实木定制地板厂家推荐排行榜,纯实木地板,原木地板,定制木地板,多层实木地板,环保实木地板公司推荐
  • function sql的版本兼容性如何
  • Java 分哪些版本 都有什么不同
  • 2025 年 11 月重型机床厂家推荐排行榜,龙门铣床,落地镗铣床,数控立式车床,深孔钻镗床公司推荐,专业制造与高效加工口碑之选
  • 2025 年 11 月 6150 机床厂家推荐排行榜,普通车床,数控车床,精密机床,重型机床公司推荐,实力与口碑双重保障
  • 2025 年 11 月实木地热地板厂家推荐排行榜,纯实木地热地板,多层实木地热地板,环保地热地板,锁扣地热地板公司推荐
  • 2025 年 11 月双头对接机床厂家推荐排行榜,双头对接机床,双头对接机床设备,双头对接机床厂家公司推荐
  • ftp配置linux
  • 2025 年 11 月数控机床厂家推荐排行榜,CNC 数控机床,精密数控机床,数控车床,数控铣床,加工中心厂家推荐
  • 2025 年 11 月实木地板厂家推荐排行榜,多层实木地板,纯实木地板,进口实木地板,环保实木地板公司精选
  • 2025 年 11 月柏尔地板厂家推荐排行榜,实木地板,多层实木地板,地暖地板,环保地板公司推荐,甄选优质材质与精湛工艺!
  • 【新品抢先看】精密拆装新纪元!正点原子S40/S40P 电动螺丝刀,以黑科技定义工具高端新纪元!
  • 2025 XTOOL X100 MAX 2 Key Programmer: 42 Services, ECU Programming, J2534 VCI KC501
  • ftp登录linux
  • GODIAG VAG Test Platform GT110+GT111 CAN-Bus Pogo Pin for 3rd/3.5th/4th Gen VAG IMMO Key Matching
  • 编译Ollama支持AMD Instinct MI50显卡,并调用ROCm7.0.2,实现Qwen3 VL模型支持
  • 2025年长沙心理咨询中心性价比排行榜,青少年厌学/孩子网瘾/焦虑/抑郁/在线/婚姻情感/孩子厌学/情绪不好/线上/情绪失控心理咨询公司排行
  • 给公司的电脑装远控,居然能治好我的焦虑?
  • AI提示设计框架:WIRE+FRAME方法详解
  • 2025浙江软膜天花厂家怎么选?这份实力厂商清单精准锁定