把数写成矩阵,则问题等价于询问矩阵的秩。以每 \(2022\) 列为一组,把第二组起的每一组异或上前一组,得到每行形如
\[a_i\tt\;|\; 00\dots00111\;|\; 00\dots00001\;|\; 00\dots00011\;|\; 00\dots00001\;|\; 00\dots01111. \]先忽略第一组。每行每个组内的 \(\tt 1\) 都是连续的后缀,且一定存在唯一的 \(\tt 1\) 最多的一组。如果确定了一行这一组中最高位的 \(\tt 1\)(下文称“关键 \(\tt 1\)”),则这一行就随之确定了。按照组内的位置由高至低遍历每一位,用这一位异或其他假设此位为 \(\tt 1\) 时其他的每一个 \(\tt 1\) 位。对于每一行,在遍历到“关键 \(\tt 1\)”前,因为遍历的位为 \(\tt 0\),所以不会影响这一行;遍历到“关键 \(\tt 1\)”时,其余 \(\tt 1\) 位会成为 \(\tt 0\);遍历到“关键 \(\tt 1\)”后,因为遍历的位为 \(\tt 0\),所以不会影响这一行。因此最后每行都只剩下了“关键 \(\tt 1\)”,重新加上第一组后每行形如
\[a_i\tt\;|\; 00\dots00000\;|\; 00\dots00000\;|\; 00\dots00000\;|\; 00\dots00000\;|\; 00\dots01000. \]再以“关键 \(\tt 1\)”为主元作消元即可。时间复杂度 \(O\left(n\log n+n\log a_i\right)\)。
=========================================================================================================================================
对于任意一人 \(a\),构造多项式
\[\begin{gathered} A(x)=\sum_{i=0}^{k-1}a_ix^i.\\ \overline A(x)=\sum_{i=0}^{k-1}\overline{a_i}x^i.\\ \end{gathered} \]其中
\[a_i=\begin{cases} 1,&s_{a,i}=\texttt R,\\ \omega_3,&s_{a,i}=\texttt P,\\ \omega_3^2,&s_{a,i}=\texttt S. \end{cases} \]则 \(A(x)\overline B^{\operatorname R}(x)\) 的循环卷积的各项系数相同等价于 \(a,b\) 之间有边(比赛是不必要的),而这等价于 \(\operatorname{DFT}[A]\cdot\operatorname{DFT}[\overline B^{\operatorname R}]\) 除常数项外值一定是 \(0\)。
一个自然的关于对称性的猜想是:\(\operatorname{DFT}[\overline B^{\operatorname R}]_i=0\iff\operatorname{DFT}[B]_i=0\),而实际上
\[\begin{aligned} \operatorname{DFT}[\overline B^{\operatorname R}]_i&=\sum_{j=0}^{n-1}\overline{b_{n-j-1}}\omega_n^{ij}=\omega_n^{-i}\sum_{j=0}^{n-1}\overline{b_{n-j-1}}\omega_n^{i(j+1)}=\omega_n^{-i}\sum_{j=0}^{n-1}\overline{b_{n-j-1}}\cdot\overline{\omega_n^{i(n-j-1)}}\\ &=\omega_n^{-i}\overline{\sum_{j=0}^{n-1}b_j\omega_n^{ij}}=\omega_n^{-i}\overline{\operatorname{DFT}[B]_i}. \end{aligned} \]据此容易验证猜想成立。
于是一个集合合法等价于:对于除常数项外的每一位,集合中至多有一个人对应的位不是 \(0\)。容易使用状态压缩动态规划求解。时间复杂度 \(O\left(nk^2+3^k\right)\)。