PrepStack · Markdown HTML

位运算不变量 / XOR 消去

位运算与位掩码状态 · HTML

数学 / 逻辑形态

XOR 满足 x^x=0、x^0=x 且交换结合;AND/OR 控制位集合,(x>>b)&1 读取第 b 位。

识别信号

容易误判的相似信号

SignalWhy it is different
需要频次大于奇偶的信息单次 XOR 只保留奇偶;完整频次需哈希或按模位计数。
Python 负数固定宽度假设Python 整数无限符号扩展,补码题需显式掩码。

核心不变量

聚合 XOR 等于所有出现次数为奇数的值之 XOR;逐位计数可在目标模数下独立恢复位。

状态、转移与处理顺序

ItemDefinition
StateXOR 累积器或长度 W 的位计数数组,以及显式全位掩码。
Transition读入 x 时做 acc^=x,或对每一位累加 (x>>b)&1。
Frontier / order已扫描元素被压缩为位摘要;未扫描元素不会影响已定义的交换结合结果。

Python 骨架

def single_among_pairs(values):
    ans = 0
    for x in values:
        ans ^= x
    return ans

def hamming_distance(a, b):
    return (a ^ b).bit_count()

def unsigned_low_bits(x, width):
    return x & ((1 << width) - 1)

正确性思路

  1. 交换结合律允许任意重排 XOR。
  2. 每对相同值自反消成 0。
  3. 0 不改变剩余唯一值,因此最终即答案。
  4. a^b 的 1 位恰是两数不同位,bit_count 给汉明距离。

复杂度

TimeSpaceParameters
XOR 聚合 O(n),逐位法 O(nW)O(1) 或 O(W)n 为元素数,W 为使用的位宽

边界条件

错误模式

PatternWhy it fails / fix
把 XOR 当加法XOR 不保留进位和数值大小。
无证明地套唯一数模板出现次数模式不同会留下多个值混合。
忽略符号扩展负数右移与取反必须限制位宽。

选择与排除规则

相关模板

RelationTemplateBoundary
位表示扩展位掩码枚举集合每一位代表集合成员
信息更全替代频次表 / 坐标计数需要精确出现次数
逐位取模模运算与快速幂出现次数按 k 消去
状态编码前缀状态 + 哈希频次前缀状态是 XOR 或奇偶 bitmask。

原创微型例子

环节内容
ResultXOR 结果为 9。
Scenario序列 [12,5,12,9,5]。
Walkthrough两个 12 与两个 5 分别消成 0,只留下 9。

Recall prompts

我的补充