CF1718A:Burenka and Traditions 题解
黑历史,长期未补的A题。
A:
题意:给出初始数列a,每次操作可以选择区间 和整数 x,将区间每个数异或上 x,花费 。求把所有数变成0的最小花费。
Solution:
容易想到,长区间没有意义,我们只需要用长度为2或1的区间,它们花费都是1。
如果用2区间从左往右扫,每次把最左边的数归零,如果到右边只剩下一个数,那么只能再用一次1区间,但你发现这样的花费,和全部用1区间是一样的,没啥用。
所以2区间是干什么的,发现像“1,3,2”这样的连续数列,使用2区间不会使右边剩下一个数,而是正好消掉,相比全部用1区间可以省1个花费。这样的区间满足异或和为0,因为用2区间左边异或 x 右边异或 x ,区间的和是不变的。
题解:先全部用1区间异或每一个数,再看看哪些区间可以用2区间来省花费,其实就是看看数列能分成多少个异或和为0的区间(为方便表示, 也算),可以简单dp求出。
看到异或就想两个事情:1.分二进制位来求。2.异或两次同一个数可以抵消。
__EOF__

【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具