省选构造专题

news/2025/1/14 12:05:29/文章来源:https://www.cnblogs.com/07Qyun/p/18666961

省选构造专题

The same permutation

首先打个表,发现在 \(1\le n\le 5\) 之内的是否有合法方案的情况为 √××√√ 大了打不出来了

考虑一下 \(4,5\) 连续有解,注意到一个偶数有解,则这个偶数 \(+1\) 也必定有解。

考虑以下构造方法

即对于某一个交换,可以在它前后各添加一个右端点相同的交换,添加前后结果是等价的。

回到上面那个结论,对于新增的点,考虑新增的交换,总共只有偶数个,所以可以在 \((1,2),(3,4),(5,6)\dots (i,i+1)\) 前后进行这个操作。

考虑继续扩展上述结论。

对于一个合法的奇数 \(i\) 发现 \(i+1\) 是否有解似乎不是那么好判断,先跳过,\(i+2\) 也不好判断,也先跳过

发现 \(i+3\) 是可以构造出合法解的,考虑如下构造。

现将 \(i+1,i+2,i+3\) 为右端点 \(1~i-1\) 为左端点通过上述方法处理掉(这是合法的因为 \(i-1\) 是偶数),现在就变为 \(i,i+1,i+2,i+3\)\(4\) 个点 \(\dbinom{4}{2}\) 种交换未处理,这个问题等价于 \(n=4\) 时的构造方案,直接代入即可。

现在合法情况是形如 √××√√??√√??√√??√√... 猜测一下对于 ? 是不可能构造出来的,所以直接写代码

对于 ? 而言确实是无法构造的,考虑证明

有一个结论,每一次交换操作全局逆序对个数的奇偶性会发生变化,考虑证明。首先只用考虑交换的两个数以及它们之间的数的贡献的变化,对于交换的两个数显然 \(|\Delta|=1\),对于中间的数分讨一下它和交换的两个数的大小关系发现 \(|\Delta|=0/2\)证毕

所以只有交换总次数是偶数才会有解,而 \(n \bmod 4 =2/3\)\(\dbinom{n}{2}=\dfrac{n(n-1)}{2}\) 是奇数,所以无解。

证毕

所以考虑以上构造方法,用链表进行维护即可。

时间复杂度 \(O(n^2)\)

[AGC006E] Rotate 3x3

先判断掉一些显然的错误。

可以转化题意变为

给定一个排列 \(a\),01 序列 \(b\)

可以无限次进行下述操作:

翻转相邻 \(3\) 个元素,并使它们对应的 \(b\) 序列异或上 \(1\)

问是否存在操作使得 \(a\) 序列升序时,\(b\) 序列全为 \(0\)

显然有每个数只能在下标奇或偶上移动,取决于最初的状态。

现在毫无头绪啊,发现第四个样例根本模不出来,写个暴力试试。

发现很多有解的操作序列中都有一段很有趣的操作。(描述一个翻转操作时设 \(x\) 为中间的那个数)

即形如 \(x,x+2,x,x+2,x,x+2\),仔细研究一下,发现这种操作不会改变 \(a\) 序列,但会使 \(b_x,b_{x+2}\) 异或上 \(1\)

这是一个有力的工具。

由于 刷题=IOI赛制,猜测一下能在不改变 \(a\) 的情况下改变 \(b\) 有意义的操作的只有这一个,所以写个 \(O(n^2)\) 的冒泡排序模拟排序序列 \(a\) ,得到最终的 \(a,b\),然后套用上述操作的结论(即 \(\operatorname{xor}_{2\mid i}b_i=0\)\(\operatorname{xor}_{2\nmid i}b_i=0\) 时有解),交上去发现只有 TLE 没有 WA!

考虑用树状数组优化上述做法,交上去发现 AC 了。

仔细思考一下,能得到下述严谨做法。

考虑一个翻转操作,会在不改变奇偶一方 \(b\) 序列异或和的情况下改变另一方的异或和。

这启发我们研究交换次数,而交换次数这个东西又是和逆序对挂钩的(考虑分奇偶后)。

所以可以分别求出奇偶的逆序对,然后套用上述结论 \(\operatorname{xor}_{2\mid i}b_i=0\)\(\operatorname{xor}_{2\nmid i}b_i=0\) 时有解 即可。

时间复杂度 \(O(n\log n)\)

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

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

相关文章

自动化进程如何优化敏捷开发中的工作流

一、敏捷开发管理工具的现状 1.1 敏捷开发管理工具的基本功能 目前,敏捷开发管理工具的主要功能包括任务管理、进度跟踪、团队协作、资源分配、需求变更管理等。这些工具通常采用看板、任务板、甘特图、Burndown图等形式,帮助团队成员可视化地管理任务、跟踪项目进度、协调跨…

不知道前端代码哪里报错了?我有七种方式去监控它!

大家好,我是桃子,前端小菜鸟一枚,在日常工作中,有时候是不是不知道前端代码哪里报错了今天我给大家分享七中方法去监控它 我们先来说说前端中的错误类型有哪一些 错误类型 1、SyntaxError SyntaxError 是解析时发生语法错误,这个错误是捕获不到的,因为它是发生在构建阶段,…

web.config站内301永久重定向代码示例

注:此代码只适用于IIS服务器,如需要将123.asp重定向到123.html,请使用以下代码。 修改说明: 在web.config文件中添加301重定向规则,将123.asp重定向到123.html。<?xml version="1.0" encoding="UTF-8"?> <configuration><system.web…

请问云服务器需要开放哪些常用端口?

云服务器需要开放的端口与具体使用环境是有关系的,开放的端口越多,存在的安全隐患也就越大,所以开放端口越少越好。服务类型 端口 说明Web服务 80(HTTP), 443(HTTPS) 提供网站访问服务。FTP 21(文件管理) 提供文件传输服务。注:21端口可以关闭或修改。远程连接服务 3…

Audacity 3.7 (Linux, macOS, Windows) - 开源音频编辑器和录音工具

Audacity 3.7 (Linux, macOS, Windows) - 开源音频编辑器和录音工具Audacity 3.7 (Linux, macOS, Windows) - 开源音频编辑器和录音工具 Audacity is the worlds most popular audio editing and recording app 请访问原文链接:https://sysin.org/blog/audacity/ 查看最新版。…

CAP:Serverless + AI 让应用开发更简单

AI 已被广泛视为推动行业进步的关键力量,其在各行业的落地步伐加快。企业在构建 AI 应用开发过程中经常会面临 AI 技术门槛过高、试错周期过长、GPU 资源昂贵且弹性能力不足、缺乏配套工具、业务与模型的开发运维过于割裂、缺乏定制化能力等挑战,成为企业构建 AI 应用的『绊脚…

【运维自动化-作业平台】如何使用全局变量之密文类型?

密文类型的全局变量使用场景相对较少,使用方式也是直接引用即可,目前仅支持shell。一起来看看如何使用实操演示 1、新建作业时创建一个密文类型的全局变量app_secret2、添加一个执行脚本的步骤,脚本里打印下这个全局变量3、调试执行更多应用场景 上面这个示例是用最简单的ec…

微信多开防撤回、防撤回PC版 | WeChat4.0.1.21

点击上方蓝字关注我 前言 很多使用微信电脑版的朋友可能都会遇到一个问题,那就是微信电脑版不能同时登录多个账号。这对于那些需要在电脑上同时管理多个微信账号的人来说,确实很不方便。还有时候,别人撤回了他们发的消息,而我们可能就错过了那些重要的内容。这个版本可以同…

【PCI】PCIe高级错误上报能力AER(十二)

AER AER(Advanced Error Reporting)是一种用于检测和报告PCIe设备中发生的错误的机制,它允许PCIe设备检测到并报告各种类型的错误。错误类型包含Correctable Errors 和Uncorrectable errors两种,其中Uncorrectable errors下面又分为ERR_FATAL和ERR_NONFATAL。Correctable Err…

鸿蒙开发 - 自定义组件 和 组件通信的方法

自定义组件的基本结构 @Entry @Component struct MyComponent {build(){// ...} }build()函数build()函数用于描述组件的UI界面,自定义组件必须定义build()函数 build() {Column() {Text(测试)Button(点击)} }struct 关键字strcut 用来声明数据结构 struct + 自定组件名 + { .…

RN/H5多设备自适应组件库来了,高效实现鸿蒙原生应用多设备精致体验

在原生鸿蒙应用开发中,华为针对ArkUI框架推出了一整套针对多设备适配的完善能力(如“一多”能力)以及高阶组件(如分栏、边看边评等),帮助开发者轻松实现“一次开发,多端部署”。然而,当前鸿蒙生态仍存在大量用跨平台框架开发的应用,部分页面采用React Native(RN)和H…

abb焊接机器人在运行过程中所遇到的问题及解决办法

一、硬件故障电气元件故障故障表现:如继电器、开关、熔断器等失效,可能是由于这些元器件的质量、性能与工作环境等因素引起的。 解决方法:对失效或破损的元器件进行维修或更换。 线路故障故障表现:长时间工作运动可能导致连接abb机器人本体的电缆或电线发生疲劳破损。 解…