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 自动生成**