NOIP 模拟赛八

news/2025/9/24 20:35:40/文章来源:https://www.cnblogs.com/qkhm/p/19106119

A.

\(\oplus\) 有一个很好的性质,操作两次相当于没变。

考虑增量构造。

x y z 变成 x x c

x y^z y^z

x^y^z y^z x^y^z

x x x^y^z

\(3\) 次操作做到。

最后会剩下 \(n\) 无法操作,判断此时是否合法,如果否,通过类似上面的操作将 \(n\)\(1\) 交换位置。

点击查看

#include <bits/stdc++.h>
#define lep(i, a, b) for (int i = a; i <= b; ++i)
#define rep(i, a, b) for (int i = a; i >= b; --i)
#define il inline
#define cmx(a, b) ((a) > (b) ? (a) : (b))
#define cmn(a, b) ((a) < (b) ? (a) : (b))
#define gmx(a, b) a = cmx(a, b)
#define gmn(a, b) a = cmn(a, b)template <typename T>
void _debug(const T& t) { std::cerr << t << '\n'; }
template <typename T, typename... Args>
void _debug(const T& t, const Args&...res) { std::cerr << t << ' '; _debug(res...); }
#define debug(...) _debug(#__VA_ARGS__ " =", __VA_ARGS__)const int LN = 3e5 + 7;
typedef long long ll;
typedef std::pair<int, int> PII;bool FIRPOS;int n, a[LN];
std::vector <PII> ans;bool ENDPOS;il void op(int x, int y) { if (a[x] == a[y]) return; a[x] ^= a[y], a[y] = a[x], ans.push_back({x, y}); }int main() {std::ios::sync_with_stdio(false),std::cin.tie(nullptr), std::cout.tie(nullptr);int c1 = clock();std::cin >> n;lep(i, 1, n) std::cin >> a[i];lep(i, 2, n - 1) op(i, i + 1), op(i - 1, i + 1), op(i - 1, i);if (a[n] < a[1]) op(n, 1), op(n - 1, 1), op(n - 1, n);std::cout << (int)ans.size() << '\n';for (auto t : ans) std::cout << t.first << ' ' << t.second << '\n';#ifdef DEBUGstd::cerr << clock() - c1 << " ms " << fabs(&ENDPOS - &FIRPOS) / 1024 / 1024 << " MB\n";
#endifreturn 0;
}

B.

简单的想到如果我们有一个递增的序列在首,可以如下操作。

bcd A a B

B A a bcd\(a\) 接到 \(bcd\) 前面,这时再将 abcd 放到队首,就可以 \(\Theta(2\times n)\) 解决。

但这样还不够,发现队尾时可以通过类似的方法往后面接。

提示我们初始从 \(\frac{n}{2}\) 开始接,交替往前后接,这样就可以做到 \(\Theta(n)\) 次了。

点击查看

#include <bits/stdc++.h>
#define lep(i, a, b) for (int i = a; i <= b; ++i)
#define rep(i, a, b) for (int i = a; i >= b; --i)
#define il inline
#define cmx(a, b) ((a) > (b) ? (a) : (b))
#define cmn(a, b) ((a) < (b) ? (a) : (b))
#define gmx(a, b) a = cmx(a, b)
#define gmn(a, b) a = cmn(a, b)template <typename T>
void _debug(const T& t) { std::cerr << t << '\n'; }
template <typename T, typename... Args>
void _debug(const T& t, const Args&...res) { std::cerr << t << ' '; _debug(res...); }
#define debug(...) _debug(#__VA_ARGS__ " =", __VA_ARGS__)const int LN = 2e5 + 7;
typedef long long ll;
typedef std::pair<int, int> PII;bool FIRPOS;int n, a[LN], cur[LN];
int sz[LN], fa[LN], ls[LN], rs[LN], rt, x, y, z;
unsigned rnd[LN];
std::vector <std::array<int, 3> > Ans;
std::vector <int> pos[LN];bool ENDPOS;il int pu(int p) {sz[p] = sz[ls[p]] + sz[rs[p]] + 1;if (ls[p]) fa[ls[p]] = p; if (rs[p]) fa[rs[p]] = p;return p;
}
void slk(int p, int k, int& x, int& y) {if (!p) return x = y = 0, void();if (k <= sz[ls[p]]) y = p, slk(ls[p], k, x, ls[y]);else x = p, slk(rs[p], k - sz[ls[p]] - 1, rs[x], y); pu(p);
}
int mrg(int x, int y) {if (!x or !y) return x | y;if (rnd[x] > rnd[y]) { rs[x] = mrg(rs[x], y); return pu(x); }ls[y] = mrg(x, ls[y]); return pu(y);
}
int rank(int x) {int ans = sz[ls[x]] + 1;while (x) {if (rs[fa[x]] == x) ans += sz[ls[fa[x]]] + 1;x = fa[x];}return ans;
}
std::mt19937 rd(time(0));
il void ins(int x) { sz[x] = 1, rnd[x] = rd(); rt = mrg(rt, x); }
void op(int a, int b, int c) {Ans.push_back({a, b, c});slk(rt, a + b, x, z), slk(x, a, x, y);rt = mrg(mrg(z, y), x);
}int main() {std::ios::sync_with_stdio(false),std::cin.tie(nullptr), std::cout.tie(nullptr);int c1 = clock();std::cin >> n;lep(i, 1, n) std::cin >> a[i], pos[a[i]].push_back(i);lep(i, 1, n) std::cin >> a[i], a[i] = pos[a[i]][cur[a[i]]++];lep(i, 1, n) ins(i);int l = (n + 1) / 2 + 1, r = (n + 1) / 2, cnt = 0, k;while (cnt < n) {if (!(cnt & 1)) {k = rank(a[--l]), op(cnt, k - cnt, n - k);++cnt;} else {k = rank(a[++r]), op(k - 1, n - cnt - k + 1, cnt);++cnt;}}std::cout << (int)Ans.size() << '\n';for (auto t : Ans) {for (auto v : t) std::cout << v << ' ';std::cout << '\n';}#ifdef DEBUGstd::cerr << clock() - c1 << " ms " << fabs(&ENDPOS - &FIRPOS) / 1024 / 1024 << " MB\n";
#endifreturn 0;
}

C.

分奇偶性如下构造即可。

点击查看

#include <bits/stdc++.h>
#define lep(i, a, b) for (int i = a; i <= b; ++i)
#define rep(i, a, b) for (int i = a; i >= b; --i)
#define il inline
#define cmx(a, b) ((a) > (b) ? (a) : (b))
#define cmn(a, b) ((a) < (b) ? (a) : (b))
#define gmx(a, b) a = cmx(a, b)
#define gmn(a, b) a = cmn(a, b)template <typename T>
void _debug(const T& t) { std::cerr << t << '\n'; }
template <typename T, typename... Args>
void _debug(const T& t, const Args&...res) { std::cerr << t << ' '; _debug(res...); }
#define debug(...) _debug(#__VA_ARGS__ " =", __VA_ARGS__)const int LN = 2e5 + 7;
typedef long long ll;
typedef std::pair<int, int> PII;bool FIRPOS;int T, n;bool ENDPOS;int main() {std::ios::sync_with_stdio(false),std::cin.tie(nullptr), std::cout.tie(nullptr);int c1 = clock();std::cin >> T;while (T--) {std::cin >> n;if (n == 1) {std::cout << "0 0 1 1\n0 1 1 0\n";} else {std::cout << "0 " << n << ' ' << n << ' ' << n - 1 << '\n';std::cout << n - 1 << ' ' << n << ' ' << n << " 0\n";if (n & 1) {std::cout << "0 0 " << n << ' ' << n - 1 << '\n';std::cout << "0 1 " << n - 1 << ' ' << n << '\n';lep(i, 1, n / 2 - 1)std::cout << i * 2 << " 0 " << n << ' ' << n - 1 - i * 2 << '\n',std::cout << "0 " << i * 2 << ' ' << n - 1 - i * 2 << ' ' << n << '\n';} else {std::cout << "0 0 " << n << ' ' << n << '\n';lep(i, 1, n / 2 - 1)std::cout << i * 2 - 1 << " 0 " << n << ' ' << n - i * 2 << '\n',std::cout << "0 " << i * 2 - 1 << ' ' << n - i * 2 << ' ' << n << '\n';}}}#ifdef DEBUGstd::cerr << clock() - c1 << " ms " << fabs(&ENDPOS - &FIRPOS) / 1024 / 1024 << " MB\n";
#endifreturn 0;
}

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

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

相关文章

第三篇

今天是9月24日,今天上了离散数学,学了新知识,还学了马克思原理,知识库又丰富了。

基于cloacked-pixel隐写工具爆破项目

cloacked-pixel-break cloacked-pixel-break基于https://github.com/livz/cloacked-pixel 二次开发项目 项目地址 https://github.com/Alexander17-yang/cloacked-pixel-break移除了旧python2的脚本相关限制,使用pyth…

如何做全网影视网站手套外包加工网

Reactor 是一个基于响应式编程的库&#xff0c;主要用于构建异步和事件驱动的应用程序。Reactor 提供了丰富的 API&#xff0c;包括创建、转换、过滤、组合等操作符&#xff0c;用于处理异步数据流。以下是一些 Reactor 的主要 API 示例&#xff1a; pom依赖 <dependencyMan…

随便写的

redis高可用性 一台redis服务器:内存16g,一个进程挂了--------->redis服务挂-------------------->系统不可用 那么就会导致项目不可用 ![shuaikun](C:\Users\86135\Pictures\Camera Roll\蝴蝶刃2.jpg) 避免r…

Bcliux-docker-nacos2.2.0升级至2.2.3版本

Linux 系统版本:Redhat7.9IP:192.158.0.3第一步:备份nacos已有第二步:关停已有nacos[test@01 ~/nacos]$ sudo docker stop 0667969d2570第三步:修改镜像信息sudo docker tag f151dab7a111 nacos_x:2.2.3第四部:复…

免费网站制作视频教程成立公司股权怎么分配

详见&#xff1a;张鑫旭 CSS3 pointer-events:none应用举例及扩展 pointer-events:none &#xff0c;可以使事件穿透&#xff0c; 如&#xff1a; 2 覆盖在 1 上面。 给 2 设置 pointer-events:none&#xff1b;那么点击在 2 上将无效&#xff0c; 可以直接触发 1 上的事件 转载…

社交网络架构。京东场景题:亿级用户100Wqps 社交关系如何设计?如何查看我的关注,关注我的?

本文 的 原文 地址 原始的内容,请参考 本文 的 原文 地址 本文 的 原文 地址 尼恩说在前面: 最近大厂机会多了, 在45岁老架构师 尼恩的读者交流群(50+)中,最近有小伙伴拿到了一线互联网企业如得物、阿里、滴滴、极…

go 面试题

go中发生panic的场景:数组/切片越界 空指针调用。比如访问一个 nil 结构体指针的成员 过早关闭 HTTP 响应体 除以 0 向已经关闭的 channel 发送消息 重复关闭 channel 关闭未初始化的 channel 未初始化 map。注意访问…

事件和图形界面(暂未完成)

事件: 注:动作监听鼠标时只能监听单击 键盘只能监听空格键

公司做网站需要注意些什么重庆沛宣网站建设

1.下载nginx压缩包 //进入/usr/local目录创建一个文件夹 cd /usr/local mkdir nginx cd nginx //下载tar包 wget http://nginx.org/download/nginx-1.20.1.tar.gz 2.配置nginx安装所需的环境 1. 安装gcc 安装 nginx 需要先将官网下载的源码进行编译&#xff0c;编译依赖 gc…

什么是sql 慢日志。哈罗面试:没开sql慢日志,怎么发现慢 sql?

本文 的 原文 地址 原始的内容,请参考 本文 的 原文 地址 本文 的 原文 地址 尼恩说在前面: 在40岁老架构师 尼恩的读者交流群(50+)中,最近有小伙伴拿到了一线互联网企业如得物、阿里、滴滴、极兔、有赞、shein 希音…

Spring连环炮。哈罗面试:Spring Bean生命周期,Spring怎么创建Bean的,BFPP和BPP的x别

本文 的 原文 地址 原始的内容,请参考 本文 的 原文 地址 本文 的 原文 地址 尼恩说在前面: 最近大厂机会多了, 在45岁老架构师 尼恩的读者交流群(50+)中,最近有小伙伴拿到了一线互联网企业如得物、阿里、滴滴、极…

redis 大 key 优化。哈罗面试:redis 有个大 key需要在线优化, 不能影响现有业务,请求不能大量到库,怎么优化?

本文 的 原文 地址 原始的内容,请参考 本文 的 原文 地址 本文 的 原文 地址 尼恩说在前面: 在40岁老架构师 尼恩的读者交流群(50+)中,最近有小伙伴拿到了一线互联网企业如得物、阿里、滴滴、极兔、有赞、shein 希音…

ACL高可用架构。希音面试:第三方挂了,我们总在背锅。来一 靠谱的 高可用方案,让 外部依赖 稳如泰山

本文 的 原文 地址 原始的内容,请参考 本文 的 原文 地址 本文 的 原文 地址 尼恩说在前面: 最近大厂机会多了, 在45岁老架构师 尼恩的读者交流群(50+)中,最近有小伙伴拿到了一线互联网企业如得物、阿里、滴滴、极…

软工9.24

今天学习了枚举类型,enum这个是类似于class的关键字,用枚举定义一个类型,在内部写的东西都是类似于一种对象的,可以用枚举类型做一些特殊的作用。

做网站怎么做连接点下一个页面青岛今天发生的重大新闻

mdadm是linux下用于创建和管理软件RAID的命令&#xff0c;是一个模式化命令。但由于现在服务器一般都带有RAID阵列卡&#xff0c;并且RAID阵列卡也很廉价&#xff0c;且由于软件RAID的自身缺陷(不能用作启动分区、使用CPU实现&#xff0c;降低CPU利用率)&#xff0c;因此在生产…

网站分站是怎么做的乐清发布网

QT画图功能 每个QWidget都自带的功能&#xff0c;继承了QPainteDevice都可以使用QPainter来进行绘图。 画图需要调用paintEvent绘制事件&#xff0c;paintEvent事件时QWidget类自带的事件。 重写paintEvent事件。&#xff08;重写事件&#xff1a;如果父类有某个方法&#xff…

无法安装 WebView2! 没有它,此应用就无法运行(解决方式附安装包)

无法安装 WebView2! 没有它,此应用就无法运行(解决方式附安装包)​ 1. 先确认系统与软件环境 ​​系统版本​​:确保你的 Windows 系统是较新的版本(一般 Win10 1809 及以上、Win11 都支持 WebView2;如果是比较旧…

2025CSP-S模拟赛51

2025CSP-S模拟赛51T1 T2 T3 T430 TLE 18 WA 54 TLE -总分:102;排名:19/24。 打得很唐氏。T1 挂了 70 分,T2 本可以做出来的,没调出来。 T1 算术 考虑对原式进行变形(省略过程): \[\left\{\begin{align*} &…