CF1946D.Birthday Gift
普及+/提高
通过率:0%
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
Yarik 的生日快到了,Mark 决定送给他一个长度为 n 的数组 a。
Mark 知道 Yarik 非常喜欢位运算,并且他还有一个最喜欢的数字 x,所以 Mark 想要找到最大的整数 k,使得可以选择 k 对数对 [l1,r1]、[l2,r2]、…、[lk,rk],满足:
- l1=1。
- rk=n。
- 对于所有 i,li≤ri。
- 对于所有 i,ri+1=li+1,1≤i<k。
- (al1⊕al1+1⊕…⊕ar1)∣(al2⊕al2+1⊕…⊕ar2)∣…∣(alk⊕alk+1⊕…⊕ark)≤x,其中 ⊕ 表示按位异或运算,∣ 表示按位或运算。
如果不存在这样的 k,输出 −1。
输入格式
每组测试数据包含多个测试用例。第一行包含一个整数 t(1≤t≤104)——测试用例的数量。接下来的每组测试用例描述如下。
每个测试用例的第一行包含两个整数 n 和 x(1≤n≤105,0≤x<230)——数组 a 的长度和数字 x。
每个测试用例的第二行包含 n 个整数 a1,a2,…,an(0≤ai<230)——数组 a 本身。
保证所有测试用例中 n 的总和不超过 105。
输出格式
对于每个测试用例,输出一个整数,表示最大的合适的 k,如果不存在这样的 k,输出 −1。
输入输出样例
输入#1
8 3 1 1 2 3 2 2 1 1 2 2 1 3 2 3 0 0 3 2 0 0 1 4 2 1 3 3 7 2 2 2 3 5 0 0 1 2 2 1
输出#1
2 2 1 2 3 -1 1 2
说明/提示
在第一个测试用例中,可以取 k=2,选择两个区间 [1,1] 和 [2,3],(1)∣(2⊕3)=1。可以证明 2 是最大可能的答案。
在第二个测试用例中,区间 [1,1] 和 [2,2] 合适,(1)∣(1)=1。无法再分更多的区间。
在第三个测试用例中,无法选择 2 个区间,因为 (1)∣(3)=3>2,所以最优答案是 1。
由 ChatGPT 4.1 翻译
输入解题思路,AI测评打分。不知道怎么写?