标签: 位运算

  • 随记 – 四月九日 – 利用二进制数高效枚举集合

    以下所有操作均可以通过递归DFS每一位并作相应判断实现。但以下写法实现简洁、常数较小,不失为一种优美的技巧。

    下文采用$S_i$表示第$i$个集合,$\text{msk}$表示其二进制表示。

    简单集合运算

    • 并:$S_1 \cup S_2 \leftarrow \text{msk}_1 \mid \text{msk}_2$
    • 交:$S_1 \cap S_2 \leftarrow \text{msk}_1\space\&\space\text{msk}_2$
    • 差:$S_1 \setminus S_2 \leftarrow \text{msk}_1\space\&\space(\sim\text{msk}_2)$
    • (相对于该二进制数类型最大值的)补集:$\sim\text{msk}$
    • 对称差集:$S_1 \Delta S_2 \leftarrow {\text{msk}_1}^{\space\land}\space \text{msk}_2$

    (更多…)