DOJ logoDOJ
题目
最近添加的题目收藏的题目Workbooks
分类DLC比赛小组团队讨论区
排名
解题数量排行榜连续解题排名DOJ Power 排行榜
评测状态
征题登录注册
DOJ logoDOJ

支持 OI 子任务计分、Elo 等级分和 Discord 认证的社区在线评测系统。

题目
题目列表分类
社区
比赛排名讨论区公告举办外部比赛指南
账号
登录注册评测状态
政策
服务条款DLC 使用规则隐私政策API 文档语言运行环境比赛排名奖励评级与表现
© 2026 DOJ
保留所有权利
题解

MEXOR

返回题目

题解

记 P(l,r)P(l,r)P(l,r) 为 Al,…,ArA_l,\ldots,A_rAl​,…,Ar​ 中 000 的个数的奇偶性。将每个元素分别作为一个区间时,得到的异或值为 P(1,N)P(1,N)P(1,N)。

如果将区间 [l,r][l,r][l,r] 内的单元素区间合并为一个区间,异或值的变化量为 MEX(l,r)⊕P(l,r)\mathrm{MEX}(l,r)\oplus P(l,r)MEX(l,r)⊕P(l,r)。因此可以选择若干互不相交的区间,将对应的变化量与初始值异或。

当区间的 MEX 为 000 时,变化量为 000。当 MEX 为 111 时,区间内没有 111。若 000 的个数为奇数,变化量仍为 000;否则,可以将该区间替换为其中两个相邻出现的 00 之间的区间,且这两个 之间没有 。替换后的变化量为 。

考虑 MEX 为 m≥2m\ge2m≥2 的区间。在区间内部选取包含 0,1,…,m−10,1,\ldots,m-10,1,…,m−1 的最短子区间 [u,v][u,v][u,v]。其两端的值都小于 ,并且在子区间内各出现恰好一次。称这样的区间为 。枚举左端点并维护元素出现次数和 MEX,即可枚举这些区间。

如果去掉的部分含有偶数个 000,关键区间本身就能产生相同的变化量。否则,可以向左侧或右侧扩展到最近的一个 000,并选择落在原区间内部的一侧。这样恰好增加一个 000;由于原区间不包含 mmm,MEX 不会改变。因此,只需要考虑所有关键区间,以及不会改变 MEX 的向左或向右的单侧扩展区间。候选区间的总数为 O(N)O(N)O(N)。

令 dp[i]dp[i]dp[i] 为在前缀 [1,i][1,i][1,i] 中选择若干互不相交的候选区间后,能够得到的变化量异或值集合。转移时可以跳过位置 iii,也可以选择任意一个以 iii 为右端点的候选区间 [l,i][l,i][l,将其变化量与 中的每个值异或。

设整个序列的 MEX 为 GGG,则任意子区间的 MEX 都不超过 GGG。所有异或值均小于 2⌈log⁡2(G+1)⌉2^{\lceil\log_2(G+1)\rceil}2⌈log2​(G+1。使用位集实现 DP,时间复杂度为 ,空间复杂度为 。最终答案为所有 中 的最大值。

0
000
111
111
mm
m
关键区间
,
i
]
dp[l−1]dp[l-1]dp[l−1]
)⌉
O(N2)O(N^2)O(N2)
O(N2)O(N^2)O(N2)
x∈dp[N]x\in dp[N]x∈dp[N]
x⊕P(1,N)x\oplus P(1,N)x⊕P(1,N)
Solution written by GPT6