CF2093G.Shorten the Array
普及+/提高
通过率:0%
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
一个长度为 m 的数组 b 的美观度定义为所有可能数对 1≤i≤j≤m 中 bi⊕bj 的最大值,其中 x⊕y 表示数字 x 和 y 的按位异或。我们将数组 b 的美观度记为 f(b)。
如果一个数组 b 满足 f(b)≥k,则称该数组是美观的。
最近,Kostya 从商店购买了一个长度为 n 的数组 a。他认为这个数组太长了,因此计划从中截取一个美观的子数组。也就是说,他需要选择两个数字 l 和 r(1≤l≤r≤n),使得子数组 al…r 是美观的。这样的子数组的长度为 r−l+1。整个数组 a 也被视为一个子数组(此时 l=1 且 r=n)。
你的任务是找出数组 a 中最短美观子数组的长度。如果不存在美观的子数组,则输出 −1。
输入格式
第一行包含测试用例的数量 t(1≤t≤104)。
接下来是 t 个由两行组成的测试块:
每个测试块的第一行包含两个整数 n 和 k(1≤n≤2⋅105,0≤k≤109)。
每个测试块的第二行包含数组 a,由 n 个整数组成(0≤ai≤109)。
保证所有测试用例的 n 之和不超过 2⋅105。
输出格式
对于每个测试用例,输出一个整数——满足 f(al…r)≥k 的最短子数组 (l,r) 的长度。如果不存在这样的子数组,则输出 −1。
输入输出样例
输入#1
6 5 0 1 2 3 4 5 5 7 1 2 3 4 5 5 8 1 2 3 4 5 5 7 3 5 1 4 2 5 3 3 5 1 4 2 6 71 26 56 12 45 60 27
输出#1
1 2 -1 4 2 -1
说明/提示
翻译由 DeepSeek V3 完成
输入解题思路,AI测评打分。不知道怎么写?