CF1743D Problem with Random Tests

题目描述

给定一个由 $n$ 个字符组成的字符串 $s$,每个字符都是 $0$ 或 $1$。 字符串 $s$ 的子串是其字符的一个连续子序列。 你需要选择 $s$ 的两个子串(可以相交,可以相同,也可以不相交——任意两个子串均可)。选择后,计算这对子串的值,具体如下: - 设 $s_1$ 是第一个子串,$s_2$ 是第二个子串,$f(s_i)$ 表示 $s_i$ 作为二进制数对应的整数(例如,如果 $s_i$ 是 11010,则 $f(s_i) = 26$); - 这对子串的值为 $f(s_1)$ 与 $f(s_2)$ 的按位或(bitwise OR)。 请计算你能获得的最大值,并以二进制形式输出(不含前导零)。

输入格式

第一行包含一个整数 $n$,表示字符串 $s$ 的长度。 第二行包含字符串 $s$,恰好由 $n$ 个字符 $0$ 和/或 $1$ 组成。 本题所有非样例测试数据均为随机生成:$s$ 的每个字符独立生成,每个字符为 $1$ 的概率恰好为 $\frac{1}{2}$。 本题共 $40$ 个测试点。第 $1$ 至 $3$ 个测试点为样例;第 $4$ 至 $10$ 个测试点 $n=5$;第 $11$ 至 $20$ 个测试点 $n=1000$;第 $21$ 至 $40$ 个测试点 $n=10^6$。 本题禁止 Hack。

输出格式

输出你能获得的最大值的二进制表示(不含前导零)。

说明/提示

在第一个样例中,你可以选择子串 11010 和 101。$f(s_1) = 26$,$f(s_2) = 5$,它们的按位或为 $31$,$31$ 的二进制表示为 11111。 在第二个样例中,你可以选择子串 1110010 和 11100。 由 ChatGPT 4.1 翻译