省赛 用 and or xor 构造指定数值
题目大意
给定初始集合 \(a_1,..,a_n\),可以求出 \(a_i * a_j\) 的结果,* 为 and/or/xor,并放入集合中成为可用数字。
最后想让 x 出现在集合中。
题解
首先考虑做到最后,会得到一个神秘集合 S,这个集合对三种运算封闭。
出于直觉,可以猜测 and/or 可以只保留其一,证明也是显然的((a and b) xor (a or b) = a xor b)。
我们现在对于这个集合 S 进行研究,其满足存在些初始元素,且关于 xor 和 and 封闭。
其关于 xor 封闭,那么就一定是个线性空间,假设其基为 e1,...,ek,k 为维度。研究当基满足什么条件会有对 and 封闭。
若 \(a,b\in V\),转变成基底表示有 \(\oplus e_{a_i} \& \oplus e_{b_i}\in V\)。此时,有一个神秘的性质,那就是 and 对 xor 有分配律。因此,最终只需要满足 \(e_i\& e_j\in V\) 即可。
通过这样可以得到 S,再对 S 用线性基得到 x。

浙公网安备 33010602011771号