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

QOJ17245 Strange Machine

真服了,打完省选好几天才想起来这个题还没做完。断断续续做了一个周,然后又学习了好几天题解,还是不会做。

纯纯神人题。由于我还没完全会做,所以先把我会的部分放上来。

操作难以描述,尝试写成人话。将瓷砖视为两位二进制数,则 \(F(a,b)=rev(a)\oplus b\),计入答案意味着某位为 \(1\)

一种和正解毫不相干的思路是,若将一段区间合成一个数,则 \(a_i\) 会贡献 \(a_i\) 或者 \(rev(a_i)\),对于 \(0\)\(3\) 两种情况是一样的。直观上大部分 \(a_i\) 都可以任意钦定贡献,事实上,考虑建立区间合并时的操作树,则贡献取决于有多少个祖先是左儿子,注意到在开头插入一个数时大部分情况都可以构造出 \(a_i\) 或者 \(rev(a_i)\),除了区间的最后两个数。因此前 \(n-2\) 个数可以任意钦定,第 \(n-1\) 个数贡献 \(rev(a_{n-1})\),最后一个数贡献 \(a_n\)\(1\)\(2\) 进行翻转等价于异或 \(3\),所以当前 \(n-2\) 个数有 \(1\)\(2\) 时可以任意钦定区间合并出的结果,这样可以做到 \(O(1)\) 判定区间。使用 bitset 优化后可以做到 \(O(\frac{n^3}w)\)

这种做法完全无法进一步优化,不过可以打表,注意到 bitset 上为 \(1\) 的位置有一定规律。考虑运算表(高位为正面):

L\R 00 01 10 11
00 00 (0) 01 (0) 10 11 (0)
01 10 (+1) 11 (+1) 00 (-1) 01 (-1)
10 01 (-1) 00 (-1) 11 (-1) 10 (-1)
11 11 (0) 10 (0) 01 (0) 00 (-2)

括号内的数为正面白色瓷砖数量的变化。

Lemma1:对于一个区间,设当前正面白色瓷砖有 \(x\) 个,任意合并后最多有 \(y\) 个,则 \(x\sim y\) 都能取到。

证明:变化量为 \(-1,-2,+1\),注意到增加时的变化总是连续的。

Lemma2:\(+1,-1\) 操作若在某个时刻不能进行,则此后一直不能进行。

证明:\(+1,-1\) 操作能进行当且仅当前 \(n-1\) 个存在 \(01\)\(10\),则若某个时刻 \(01\)\(10\) 只在 \(a_n\) 出现,阅读表格可以发现做若干次操作后两者仍最多只会在 \(a_n\) 出现。

Lemma3:任意合并得到的正面白色瓷砖数量最小值 \(<2\)

可以将其合并到只剩一个瓷砖。

由此,若一开始就无法进行 \(+1,-1\) 操作,则能得到哪些值是很清晰的, \(\leq\) 当前值且与当前值奇偶性相同。考虑一开始可以进行 \(+1,-1\) 操作。

Lemma4:若一开始可以进行 \(-1\) 操作,设能得到的最大值为 \(y\),则 \(3\sim y\) 均可以得到。

任取一对相邻的瓷砖,使得操作其后总数变化为 \(-1\),将该对瓷砖左边称为 \(L\),右边称为 \(R\)。设此时总共有 \(x\) 个正面白色瓷砖。我们对 \(L\)、这对瓷砖、\(R\) 三部分进行独立操作,发现最小值不超过 \(3\)(三部分都操作成一个瓷砖),考虑先不操作这对瓷砖,那么从 \(x\) 变化到 \(\leq4\) 的过程中,不可能有连续两个数无法得到(即不存在 \(3\leq z<x\),使得 \(z\)\(z+1\) 均无法得到),因为减法最多 \(-2\)。对于一个只操作两边无法得到的数 \(z\),我们只需操作到 \(z+1\),然后操作中间那对瓷砖即可得到 \(z\)。先将区间操作到 \(y\),再应用上述过程,即可说明 \(3\sim y\) 都能取到。

Lemma5:若一开始可以进行 \(+1\) 操作,设能得到的最大值为 \(y\),则 \(3\sim y\) 均能得到。

注意到此时该对瓷砖都不会是正面白色。类似地,从 \(x\) 变化到 \(\leq2\) 的过程中,对于一个只操作两边无法得到的数 \(z\),操作到 \(z-1\) 后操作中间那对瓷砖即可。

综合 Lemma4 和 Lemma5,若一开始能进行 \(+1,-1\) 操作,则 \(3\sim y\) 均能得到,而不能进行的情况亦可以简单判断。

求出 \(y\) 之后只需判断 \(0,1,2\) 的情况。求 \(y\) 可以贪心,正面白色瓷砖无需操作,而 \(F(01,**)=1,F(00,**)=0\),贪心地将最前面的 \(01\) 和后面的配对,若一段 \(01\) 之后存在 \(00\),则为 \(\lfloor\frac{len+1}2\rfloor\),否则为 \(\lfloor\frac{len}2\rfloor\)。最大值为所有这样的和加起来。单点修改后亦可维护。

Lemma6:下次一定。

http://www.jsqmd.com/news/479484/

相关文章:

  • 鸭式布局探空火箭嵌入式制导系统设计与实现
  • 双路USB功率计设计:快充场景下的高精度电参数测量
  • 16位电压电流采集表硬件设计与Modbus RTU实现
  • Excel 学习笔记整理:常用操作、数据清洗与公式应用实战
  • 基于超级电容的机电能量转换小车设计
  • 如何用WeChatFerry打造企业级微信自动化解决方案
  • Qwen-Turbo-BF16镜像免配置教程:预装依赖+自动路径检测+一键start.sh
  • 《Vue3 生命周期与项目调试:组件什么时候执行,报错到底该怎么看?》
  • 《超实用!Tableau大数据操作的快速上手攻略》
  • CLIP ViT-H-14 RESTful API安全加固:JWT鉴权+请求限流+敏感图像过滤实践
  • Linux环境下llama-cpp-python高效部署与性能调优实践指南
  • DLSS Swapper:3分钟提升游戏帧率的开源版本管理解决方案
  • 一键搞定XYZ三列转map表~高效实用!
  • bilateralFilter写了一万遍,你知道OpenCV怎么用两张查找表干掉exp()的吗?——双边滤波·保边去噪·OpenCL源码全拆解
  • 使用GLM-4-9B-Chat-1M构建智能客服系统:支持26种语言实时对话
  • 小白也能懂!Qwen3-Reranker-0.6B轻量级模型保姆级部署指南
  • 3D高斯泼溅新玩法:不用COLMAP也能搞定相机位姿估计(附实战代码)
  • Z-Image Turbo影视应用:分镜脚本可视化系统
  • day52 代码随想录算法训练营 图论专题6
  • 芋道多租户实战:如何用ThreadLocal实现全链路租户隔离(附避坑指南)
  • 西电电子线路实验二:从原理到实战的完整通关指南(2024版)
  • opus4.6—1M正式上线!
  • cv_unet_image-colorization企业应用:房地产公司历史楼盘黑白图纸AI上色用于宣传册
  • RVC开源生态整合:对接Gradio、FFmpeg、SoX实现自动化流水线
  • 电子秤设计实战:用SIG24130替代ADS1248的完整方案(含PCB布局建议)
  • Super Qwen Voice World效果展示:金币数量HUD随语音质量动态增长
  • B样条曲线在自动驾驶路径规划中的实战应用(附MATLAB/C++代码)
  • C++与机器学习框架
  • SecGPT-14B保姆级教程:无root权限服务器上使用conda隔离部署vLLM
  • GitHub访问速度优化:3种解决方案与实施指南