CF2048C.Kevin and Binary Strings
普及-
通过率:0%
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
Kevin 在月光河公园的河里发现了一个二进制字符串 s,它以 1 开头,并把它交给了你。你的任务是从 s 中选择两个非空子串(允许重叠),以使得它们之间的异或值最大。
对于两个二进制字符串 a 和 b,它们的异或结果是将 a 和 b 看作二进制数后,进行按位异或操作 ⊕ 所得到的结果,其中最左边的位即为最高位。可以参考按位异或操作。
你选择的字符串可以包含前导零。
输入格式
输入包含多个测试用例。第一行是测试用例的数量 t(1≤t≤103)。
接下来的每个测试用例有一行,包含一个以 1 开头的二进制字符串 s(1≤∣s∣≤5000)。
保证所有测试用例中 ∣s∣ 的总长度不超过 5000。
输出格式
对于每个测试用例,输出四个整数 l1,r1,l2,r2(1≤l1≤r1≤∣s∣, 1≤l2≤r2≤∣s∣)——表示你选择的两个子串分别是 sl1sl1+1…sr1 和 sl2sl2+1…sr2。
如果存在多种可能的解,输出任意一种即可。
输入输出样例
输入#1
5 111 1000 10111 11101 1100010001101
输出#1
2 2 1 3 1 3 1 4 1 5 1 4 3 4 1 5 1 13 1 11
说明/提示
在第一个测试用例中,我们可以选择 s2=1 和 s1s2s3=111,此时 1⊕111=110。可以证明这是可能得到的最大值。此外,选择 l1=3,r1=3,l2=1,r2=3 也是一个有效的解决方案。
在第二个测试用例中,选择 s1s2s3=100 和 s1s2s3s4=1000,则异或结果为 100⊕1000=1100,也是最大的结果。
本翻译由 AI 自动生成
输入解题思路,AI测评打分。不知道怎么写?