省赛 用 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。

posted @ 2025-06-10 21:27  哼唧昂叽  阅读(61)  评论(0)    收藏  举报