输入一个大小为$n$的正整数集合$𝑆$,求最大的$𝑥$,使得能构造一个$0$到$2^x−1$的排列𝑝,满足$𝑝_𝑖⊕p_{i+1}∈𝑆$
可知$p_i \oplus p_{i+k}=S_i …\oplus S_j$,因为存在$0$,即构造一个数列能被表示所有$S$线性基所表示。找到非空的最大线性基,然后要需要判断里面是否存在$lineBase[i]>2^x$。然后瞎$JB$构造一下,保证没有重复即可。
代码
1 |
|
输入一个大小为$n$的正整数集合$𝑆$,求最大的$𝑥$,使得能构造一个$0$到$2^x−1$的排列𝑝,满足$𝑝_𝑖⊕p_{i+1}∈𝑆$
可知$p_i \oplus p_{i+k}=S_i …\oplus S_j$,因为存在$0$,即构造一个数列能被表示所有$S$线性基所表示。找到非空的最大线性基,然后要需要判断里面是否存在$lineBase[i]>2^x$。然后瞎$JB$构造一下,保证没有重复即可。
1 |
|