OI 随记 – 四月九日 – 利用二进制数高效枚举集合 以下所有操作均可以通过递归DFS每一位并作相应判断实现。但以下写法实现简洁、常数较小,不失为一种优美的技巧。 下文采用SiS_iSi表示第iii个集合,msk\text{msk}msk表示其二进制表示。 简单集合运算 并:S1∪S2←msk1∣msk2S_1 \cup S_2 \leftarrow \text{msk}_1 \mid \text{msk}_2S1∪S2←msk1∣msk2 交:S1∩S2←msk1 & msk2S_1 \cap S_2 \leftarrow \text{msk}_1\space\&\space\text{msk}_2S1∩S2←msk1 & msk2 差:S1∖S2←msk1 & (∼msk2)S_1 \setminus S_2 \leftarrow \text{msk}_1\space\&\space(\sim\text{msk}_2)S1∖S2←msk1 & (∼msk2) (相对于该二进制数类型最大值的)补集:∼msk\sim\text{msk}∼msk 对称差集:S1ΔS2←msk1 ∧ msk2S_1 \Delta S_2 \leftarrow {\text{msk}_1}^{\space\land}\space \text{msk}_2S1ΔS2←msk1 ∧ msk2 (更多…) More 2022年4月9日