CF2048C Kevin and Binary Strings
题目描述
Kevin 在月光河公园的河里发现了一个二进制字符串 $s$,它以 1 开头,并把它交给了你。你的任务是从 $s$ 中选择两个非空子串(允许重叠),以使得它们之间的异或值最大。
对于两个二进制字符串 $a$ 和 $b$,它们的异或结果是将 $a$ 和 $b$ 看作二进制数后,进行按位异或操作 $\oplus$ 所得到的结果,其中最左边的位即为最高位。可以参考[按位异或操作](https://en.wikipedia.org/wiki/Bitwise_operation#XOR)。
你选择的字符串可以包含前导零。
输入格式
无
输出格式
无
说明/提示
在第一个测试用例中,我们可以选择 $s_2 = \texttt{1}$ 和 $s_1 s_2 s_3 = \texttt{111}$,此时 $\texttt{1} \oplus \texttt{111} = \texttt{110}$。可以证明这是可能得到的最大值。此外,选择 $l_1 = 3$,$r_1 = 3$,$l_2 = 1$,$r_2 = 3$ 也是一个有效的解决方案。
在第二个测试用例中,选择 $s_1 s_2 s_3 = \texttt{100}$ 和 $s_1 s_2 s_3 s_4 = \texttt{1000}$,则异或结果为 $\texttt{100} \oplus \texttt{1000} = \texttt{1100}$,也是最大的结果。
**本翻译由 AI 自动生成**