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 翻译