Infinite Sequence (Easy Version)

news/2025/3/5 19:18:08/文章来源:https://www.cnblogs.com/YzaCsp/p/18753374

思路

题意

给定一个正整数 nn 和一个无限二进制序列 aa 的前 nn 项, 该序列定义如下:
对于 m>nm > n, am=a1a2am2a_m = a_1 \oplus a_2 \oplus \ldots \oplus a_{\lfloor \frac{m}{2}\rfloor}

tt 次询问 (t104)(t \leq 10^4) , 求 aia_i 值, 其中 1i10181 \leq i \leq 10^{18}
其中 ai{0,1}a_i \in \{0, 1\}

这不用找规律?
试图矩阵快速幂

\[\begin{align*} \begin{cases} a_i \gets a_{i - 1} \oplus a_{\frac{i}{2}} , \textrm{ case } i \textrm{ mod } 2 = 0 \\ a_i \gets a_{i - 1} , \textrm{ otherwise} \end{cases} \end{align*}\]

倘若维护

\[\begin{pmatrix} a_i \\ a_{\frac{i + 1}{2}} \end{pmatrix} \]

在更新 \(a_{\frac{i + 1}{2}}\) 需要其他信息, 因此不行

哎哎哎, 看了题解怎么是暴力优化
发现异或操作的性质是: 两个相同数异或可以无视

为了方便起见, 假设 \(n\) 是奇数(如果不是,递增 \(n\) 共单独处理边界情况)。首先预计算前 \(2n\) 项或等于 \(2n\) 的查询,直接返回预计算的值。对于 \(2m > n\),观察以下关系:

\[a_{2m} = a_1 \oplus a_2 \oplus \ldots \oplus a_m = a_{2m+1} \]

定义 \(p = a_1 \oplus a_2 \oplus \ldots \oplus a_n\),我们可以将异或和分解为:

\[a_{2m} = a_1 \oplus a_2 \oplus \ldots \oplus a_m = a_1 \oplus a_2 \oplus \ldots \oplus a_n \oplus (a_{n+1} \oplus a_{n+2}) \oplus (a_{n+3} \oplus a_{n+4}) \oplus \ldots \oplus a_m \]

由于 \(n\) 是奇数,成对的 \((a_{n+1} \oplus a_{n+2})\), \((a_{n+3} \oplus a_{n+4})\), \(\ldots\),会相互抵消。这简化了公式为:

\[a_{2m} = a_{2m+1} = \begin{cases} p & \textrm{case } m \textrm{ mod } 2 = 1 \\ p \oplus a_m & \textrm{otherwise } \end{cases} \]

因此,我们可以通过递归地将 \(m\) 减半来计算 \(a_m\),直到 \(m \leq 2n\),并在每一步应用奇偶性规则。总体时间复杂度为:

\[O(\log(m)) \]

总结

异或性质

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

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

相关文章

推荐三本数学方面的书籍《数学要素》、《矩阵力量》和《统计至简》 - 鸢尾花书:从加减乘除到机器学习 - 姜伟生 - PDF免费下载

下载地址:https://pdfs.top/book/鸢尾花书系列:从加减乘除到机器学习.html。《鸢尾花书系列:从加减乘除到机器学习》是姜伟生博士编写的机器学习从入门到精通合集,旨在帮助读者从编程基础到机器学习掌握关键技能。每本书内容简洁,适合不同阶段的学习者,帮助读者快速上手并…

第一次个人编程项目

学号 3123004294Github仓库链接 https://github.com/Berluga/3123004294.git项目 内容这个作业属于哪个课程 软件工程导论这个作业要求在哪里 作业要求文档这个作业的目标 通过实现一个查重系统,综合训练算法设计、工程规范、测试及文档撰写能力PSP 2.1 表格PSP阶段 预估耗时(…

【Java 开发】windows 命令行cmd界面,运行java 程序报错情况分析和解决!

windows cmd 运行java 程序报错了 (编译通过,运行报错)通过 java 和 javac 命令 得知,两个命令的版本不一样。因为这是因为有两个java 版本所导致的。 此时 需修改环境变量的配置。 此时我们找到 path 环境变量的配置 可以看到 配置了两个 JAVA_HOME的变量 一个JAVA_HOME 对…

2025/3/4 - Vue3学习--基础创建教程学习笔记

基于VUE创建:创建流程VScode实例-->编写APP组件

sql(3)多表查询

1.内连接查询(交集)2.外连接左外连接会全显示表一,右外连接会全显示表二,然后都显示交集部分。 3.子查询(嵌套查询) 行子查询表子查询注:给表起别名 select * from tb_emp e,tb_dept d where e.dept_id=d.id;

EndNote 21软件下载与安装教程

1、安装包 扫描下方二维码关注「软知社」,后台回复【042】三位数字即可免费获取分享链接,无广告拒绝套路;2、安装教程双击Setup.exe安装,弹窗安装对话框点击Next选择I would like a free ftrial ,点击Next点击Next选择I accept ,点击Next默认Next选择安装路径,建议C盘之外…

AxMath 2.6软件下载与安装教程

1、安装包 扫描下方二维码关注「软知社」,后台回复【041】三位数字即可免费获取分享链接,无广告拒绝套路; 2、安装教程双击安装,弹窗安装对话框Chinese - 点击OK按钮选择组件,默认方式,点击下一步等待进度安装,安装完成,点击完成按钮安装完成,点击关闭,不更新补丁操…

台达 hmi 人机 B10E615 备份 上传 二娃备忘 erwa.cn

台达DOP-B系列程序的上载下载操作说明 1、传输时要先进入SYS界面,在屏幕的空白处长按3秒以上,弹出如下图:确定点 系统设置-MISC 改为USBCOMMMODE:1进入 上载下载标准模式选择COM1到这个界面就可以上载下载程序了。 2、通讯电缆的制作和连接: 电缆有2种,一种是USB方口打印…

Sentinel整合Nacos实现持久化

想要实现Sentinel持久化,首先我们得思考为什么需要持久化?通俗来说就是:每次服务启动,都得重新去Sentinel dashboard中配置Sentinel的各种规则。例如流量规则、热点规则、熔断规则、授权规则。当服务数量众多时,一旦服务重新启动,所有规则都被清空,需要重新为每一个服务…

数码管驱动原厂-LED显示驱动VK1616 SOP16/DIP16抗干扰数显驱动芯片【FAE技术支持】

产品品牌:永嘉微电/VINKA 产品型号:VK1616 封装形式:SOP16/DIP16 概述 VK1616是一种数码管或点阵LED驱动控制专用芯片,内部集成有3线串行接口、数据 锁存器、LED 驱动等电路。SEG脚接LED阳极,GRID脚接LED阴极,可支持7SEGx4GRID 的点阵LED显示面板。采用SOP16/DIP16的封装…