P9017 [USACO23JAN] Lights Off G

news/2025/2/28 15:32:12/文章来源:https://www.cnblogs.com/YzaCsp/p/18628625

前言

困了一下午, 仅仅只搞懂了个大概, 我们赶紧把这些题补了, 冷静一点

思路

观察大样例可以发现, 答案好像都不大
容易证明的是先用最多 \(n\) 次关闭所有开关, 然后在 \(2n\) 次打开每个灯, 这样一定不超过 \(3n\) 次就可以成功的打开所有灯
那么我们考虑以这个为突破口, 枚举操作次数解决问题

那么考虑对于一种操作次数 \(m\) , 怎样判断其是否可行

首先你需要知道操作的小转化 : 对于每个 \(2\) 操作, 我们发现其相当于一个 \(\oplus\) , 那么我们可以利用 \(\oplus\) 的交换律和自反律, 得出 \(a\) 的初始状态和 \(b\) 的变换是互相不影响的两个部分, 下面我们只考虑 \(b\) 变换的异或积

稍微观察一下第 \(i\) 次操作的性质, 你发现最终第 \(i\) 次操作会覆盖到 \(m - i + 1\) 大小的区间, \(\rm{belike}\) :
m - i + 1

那么对于 \(m\) 次操作, 相当于一串长度为 \(1, 2, 3 \cdots m\) 的区间取反

这个时候问题就更加符合中国宝宝的体质, 每次操作次数 \(m \gets m + 1\) , 转化过来仅仅是多了一个长为 \(m + 1\) 的区间取反

这个时候看似没法处理了, 但是你发现即使是多组测试数据, 但是 \(n\) 都是相通的, 进一步思考可以发现, 我们可以考虑来一个全局的预处理

考虑令 \(f_{i, S}\) 表示第 \(i\) 次操作能否转化到 \(S\) , 其中 \(f_{i, S} \in \{0, 1\}\)

容易发现每次其实就是从 \(f_{i - 1, S^{\prime}}\) 通过新增加一个长为 \(i\) 的区间取反变换而来的

我们可以容易的列出柿子

\[f_{i, S} \gets f_{i - 1, S^{\prime} }, \lvert S^{\prime} \rvert = i \]

即可


感觉有点混乱, 我们再理一遍思路

首先你观察操作, 发现 \(a\) 的初始状态和 \(b\) 的变换是两个部分, 可以分开讨论

观察大样例发现答案很小, 我们考虑证明出答案 \(\leq 3n\) , 然后枚举答案(及操作次数)

假设操作次数为 \(m\)

稍微观察一下第 \(i\) 次操作的性质, 你发现最终第 \(i\) 次操作会覆盖到 \(m - i + 1\) 大小的区间, \(\rm{belike}\) :
m - i + 1

那么对于 \(m\) 次操作, 相当于一串长度为 \(1, 2, 3 \cdots m\) 的区间取反

这个时候问题就更加符合中国宝宝的体质, 每次操作次数 \(m \gets m + 1\) , 转化过来仅仅是多了一个长为 \(m + 1\) 的区间取反

然后我们考虑全局预处理

结束

实现

难点不在实现

总结

对于 \(01\) 串的操作, 我们考虑用数学语言表示
善于利用运算律简化问题

当观察到答案较小时, 考虑

  • 分讨答案
  • 枚举答案检查

玩样例可以找到一些有用的性质

如果多组测试数据有相通之处, 也许你可以全局的处理?

感觉这个题到紫了, 很难, 跨段做题其实是很影响心态的, 因为连我自己都不知道为什么可以这样想

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

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

相关文章

物联网数据处理-iris数据集(鸢尾花)

物联网数据处理-iris数据集(鸢尾花) 大作业题目读入 iris.txt 里的鸢尾花数据,不考虑标签信息(标签是用来监督学习用的,这里是无监督),利用 PCA(减少噪声,利于可视化) 将数据从 4 维降成 2 维 之后,进行以下操作:利用不同的方式构建邻接矩阵(高斯核,k-临近等)(…

基于扩频解扩+turbo译码的64QAM图传通信系统matlab误码率仿真,扩频参数可设置

1.算法仿真效果 matlab2022a仿真结果如下(完整代码运行后无水印): 仿真操作步骤可参考程序配套的操作视频。2.算法涉及理论知识概要该通信系统主要用于图像传输,适用于对图像质量和传输可靠性要求较高的场景,如无人机图像传输、视频监控、无线电视广播等。在复杂的电磁环境…

SIP协议中与Dialog相关的概念

如下RFC文档所述:在SIP协议中,对话(Dialog)是由两个用户代理(User Agent,简称UA)之间持续一段时间的端到端关系,通过Call-ID、To-tag和From-tag来标识(即Dialog ID),用于对一个会话(Session)进行信令交互。对话代表一个上下文场景,据此来阐释相关的SIP消息(即一系…

HBuilderX运行到微信开发者工具

HBuilderX运行到微信开发者工具

快手MARM 文章理解

阅读了快手的论文 MARM,论文中的算法 符号看起来不容易理解。 对照图自己研究了下, 理解了。需要知道为什么(b) 和(c) 中 的中间结果是相同的。需要知道 masked-self-attention缓存是怎么处理,看箭头快手 MARM: Unlocking the Future of Recommendation Systems through Mem…

NSSCTF--Crypto--[CISCN 2023 初赛]badkey

NSSCTF Crypto [CISCN 2023 初赛]badkey[CISCN 2023 初赛]badkey task: from Crypto.Util.number import * from Crypto.PublicKey import RSA from hashlib import sha256 import random, os, signal, stringdef proof_of_work():random.seed(os.urandom(8))proof = .join([ra…

deque容器/构造函数/赋值操作/大小操作/插入和删除/数据存取/排序

deque容器基本概念 功能: 双端数组,可以对头端进行插入删除操作 deque与vector区别: vector对于头部的插入删除效率低,数据量越大,效率越低 deque相对而言,对头部的插入删除速度会比vector块 vector访问元素时的速度会比deque快,这和两者内部实现有关deque内部工作原理:…

CSS基础-长度单位

💖简介 在CSS中,长度单位分为绝对长度单位和相对长度单位。这些单位用于定义元素的尺寸、边距、填充、字体大小等属性值 vmin和vmax是CSS中的相对长度单位,它们基于视口(viewport)尺寸来定义元素的宽度或高度。这些单位使得元素的尺寸可以根据视口的大小进行缩放,从而有…

基于GRNN广义回归网络和MFCC的语音情绪识别matlab仿真,对比SVM和KNN

1.算法运行效果图预览 (完整程序运行后无水印) filePath =Test_data\悲伤1.wav类型:悲伤 识别置信度Vmax =0.9559 2.算法运行软件版本 matlab2022a3.部分核心程序 (完整版代码包含详细中文注释和操作步骤视频)Labsn = []; % 遍历每种情绪 for i = 1:length(Em_kind)Labs0…

学习高校课程-软件设计模式-访客模式(lec13)

Visitor: Problem Example: exporting the graph into XML format 示例:将图表导出为 XML 格式Visitor: Solution Place the new behavior into a separate class called visitor The original object passed to the visitor’s method as an argument

[学习笔记] 线性筛与欧拉函数

一 线性筛主要讲下思想,埃氏筛法就是用所有质数标记所有倍数,这样的时间复杂度是 \(O(n\log n\log n)\),有两只 \(\log\)。可是我不想要 \(\log\),于是欧拉筛: 改进:存下质数表。对于每一个数,只标记自己与不超过自己最小质因子的数的乘积,对于质数表 \(2,3,5\),循环到…