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

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

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

二进制序列与查询

返回题目

题解

以下使用 000 到 N−1N-1N−1 的下标,并把所有下标按模 NNN 解释。

在同一个起点执行两次操作会互相抵消。因此只需令 xi∈{0,1}x_i\in\{0,1\}xi​∈{0,1} 表示是否在位置 iii 开始的操作被执行奇数次。

为了让位置 iii 最终变成 0,必须满足

ai=⨁j=i−K+1ixj.a_i=\bigoplus_{j=i-K+1}^{i}x_j.ai​=j=i−K+1⨁i​

将相邻两个位置的方程异或,得到

xi⊕xi−K=Δi,Δi=ai⊕ai−1.x_i\oplus x_{i-K}=\Delta_i,\qquad \Delta_i=a_i\oplus a_{i-1}.xi​⊕xi−K​=

令 d=gcd⁡(N,K)d=\gcd(N,K)d=gcd(N,K)、m=N/dm=N/dm=N/d、h=K/dh=K/dh=K/。映射 会把所有下标分成恰好 个长度为 的环。

对余数类 rrr 定义

Pr=⨁i≡r(modd)ai.P_r=\bigoplus_{i\equiv r\pmod d}a_i.Pr​=i≡r(modd)⨁

把一个环中的所有差分方程异或,结果为 Pr⊕Pr−1P_r\oplus P_{r-1}Pr​⊕Pr−1​。因此差分方程有解当且仅当

P0=P1=⋯=Pd−1.P_0=P_1=\cdots=P_{d-1}.P0​=P1​=⋯=P

把一个环按

vt=r+tK(modN),t=0,…,m−1v_t=r+tK\pmod N,\qquad t=0,\ldots,m-1vt​=r+tK(modN),

的顺序排列。选取 canonical 解

xv0=0,xvt=xvt−1⊕Δvt(t≥1).x_{v_0}=0,\qquad x_{v_t}=x_{v_{t-1}}\oplus\Delta_{v_t}\quad(t\ge1).xv0​​=0,x

记环 rrr 中 x=1x=1x=1 的个数为 crc_rcr​。

只考虑差分方程时,每个环都有一个自由变量 yry_ryr​,表示是否把整个环的 xxx 全部翻转。yr=0y_r=0yr​=0 的代价是 , 的代价是 。因此只满足差分方程的最小代价为

B=∑rmin⁡(cr,m−cr).B=\sum_r\min(c_r,m-c_r).B=r∑​min(cr​,m−

差分方程只使用了原方程之间的差,所以还需要额外满足一个原方程。对位置 000 定义残量

E=a0⊕⨁j=−K+10xj.E=a_0\oplus\bigoplus_{j=-K+1}^{0}x_j.E=a0​⊕j=−K+1⨁

目标是 E=0E=0E=0。

长度为 KKK 的区间中,每个余数类恰好出现 h=K/dh=K/dh=K/d 次。

若 hhh 为偶数,翻转整个环不会改变 EEE。因此 E=1E=1E=1 时无解,E=0E=0E=0 时答案为 BBB。

若 hhh 为奇数,每个 yry_ryr​ 都会把 EEE 翻转一次,所以必须满足

y0⊕y1⊕⋯⊕yd−1=E.y_0\oplus y_1\oplus\cdots\oplus y_{d-1}=E.y0​⊕y1​⊕⋯⊕y

对每个环,按代价较小的一侧定义

zr=[cr>m/2],Z=⨁rzr.z_r=[c_r>m/2],\qquad Z=\bigoplus_r z_r.zr​=[cr​>m/2],

若 Z=EZ=EZ=E,答案就是 BBB。否则必须让某一个环选择另一侧,额外代价为

min⁡r∣m−2cr∣.\min_r|m-2c_r|.rmin​∣m−2cr​∣.

处理查询时,翻转 apa_pap​ 只会翻转 Δp\Delta_pΔp​、Δp+1\Delta_{p+1}Δ 和 。因此只要维护 的余数类数量,就能在 时间判断所有 是否相等。

在一个环内,若翻转 Δvs\Delta_{v_s}Δvs​​ 且 s≥1s\ge1s≥1,canonical 解中的

xvs,xvs+1,…,xvm−1x_{v_s},x_{v_{s+1}},\ldots,x_{v_{m-1}}xvs​​,xv

这一段 suffix 会全部翻转。当 s=0s=0s=0 时,Δv0\Delta_{v_0}Δv0​​ 只用于环的闭合一致性条件,不会改变 canonical 解本身。

把所有环按环内顺序拼接成一个长度为 NNN 的数组,使用支持区间翻转和区间 111 个数查询的 lazy segment tree。每个查询最多进行两次 suffix 翻转,并重新计算至多两个受影响环的 crc_rcr​。

每当某个 crc_rcr​ 改变时,同时维护:

  • B=∑rmin⁡(cr,m−cr)B=\sum_r\min(c_r,m-c_r)B=∑r​min(cr​,m−c

EEE 也不需要每次重新计算。预处理 impact[u]impact[u]impact[u],表示翻转 Δu\Delta_uΔu​ 时被翻转的 canonical suffix 与 EEE 使用的长度 区间相交位置数的奇偶性。环的起点满足 。对位置 的查询,

E⊕=[p=0]⊕impact[p]⊕impact[p+1].E\mathrel{\oplus}=[p=0]\oplus impact[p]\oplus impact[p+1].E⊕=[p=0]⊕impact[p]⊕impac

因此每个查询的答案为:

  • 若所有 PrP_rPr​ 不相等,输出 -1;
  • 若 hhh 为偶数,E=1E=1E=1 时输出 -1,否则输出 BBB;
  • 若 为奇数,答案为 。

每个测试用例的预处理时间为 O(Nlog⁡N)O(N\log N)O(NlogN),每个查询为 O(log⁡N)O(\log N)O(logN)。总时间复杂度为 O((N+Q)log⁡N)O((N+Q)\log N)O((N+Q,空间复杂度为 。

Solution written by GPT5.6

xj​
.
Δi​
,
Δi​
=
ai​⊕
ai−1​.
d
i↦i+Ki\mapsto i+Ki↦i+K
ddd
mmm
​
ai​
.
d−1
​
.
t
=
0,…,m−
1
vt​​
=
xvt−1​​⊕
Δvt​​(t≥
1).
crc_r
cr​
yr=1y_r=1yr​=1
m−crm-c_rm−cr​
c
r​
)
.
0
​
xj​
.
d−1​
=
E.
Z
=
r⨁​zr​.
p+1
​
Pp mod dP_{p\bmod d}Ppmodd​
Pr=1P_r=1Pr​=1
O(1)O(1)O(1)
PrP_rPr​
s+1
​
​
,
…
,
xvm−1​​
r​
)
  • Z=⨁r[cr>m/2]Z=\bigoplus_r[c_r>m/2]Z=⨁r​[cr​>m/2]
  • 所有 ∣m−2cr∣|m-2c_r|∣m−2cr​∣ 组成的 multiset
  • KK
    K
    impact[u]=0impact[u]=0impact[u]=0
    ppp
    t
    [
    p
    +
    1].
    hh
    h
    B+[Z≠E]⋅min⁡r∣m−2cr∣B+[Z\ne E]\cdot\min_r|m-2c_r|B+[Z=E]⋅minr​∣m−2cr​∣
    )
    log
    N
    )
    O(N)O(N)O(N)