CF2093G.Shorten the Array

普及+/提高

通过率:0%

AC君温馨提醒

该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

一个长度为 mm 的数组 bb 的美观度定义为所有可能数对 1≤i≤j≤m1 \le i \le j \le m 中 bi⊕bjb_i \oplus b_j 的最大值,其中 x⊕yx \oplus y 表示数字 xx 和 yy 的按位异或。我们将数组 bb 的美观度记为 f(b)f(b)。

如果一个数组 bb 满足 f(b)≥kf(b) \ge k,则称该数组是美观的。

最近,Kostya 从商店购买了一个长度为 nn 的数组 aa。他认为这个数组太长了,因此计划从中截取一个美观的子数组。也就是说,他需要选择两个数字 ll 和 rr(1≤l≤r≤n1 \le l \le r \le n),使得子数组 al…ra_{l \dots r} 是美观的。这样的子数组的长度为 r−l+1r - l + 1。整个数组 aa 也被视为一个子数组(此时 l=1l = 1 且 r=nr = n)。

你的任务是找出数组 aa 中最短美观子数组的长度。如果不存在美观的子数组,则输出 −1-1。

输入格式

第一行包含测试用例的数量 tt(1≤t≤1041 \le t \le 10^4)。

接下来是 tt 个由两行组成的测试块:

每个测试块的第一行包含两个整数 nn 和 kk(1≤n≤2⋅1051 \le n \le 2 \cdot 10^5,0≤k≤1090 \le k \le 10^9)。

每个测试块的第二行包含数组 aa,由 nn 个整数组成(0≤ai≤1090 \le a_i \le 10^9)。

保证所有测试用例的 nn 之和不超过 2⋅1052 \cdot 10^5。

输出格式

对于每个测试用例,输出一个整数——满足 f(al…r)≥kf(a_{l \dots r}) \ge k 的最短子数组 (l,r)(l, r) 的长度。如果不存在这样的子数组,则输出 −1-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测评打分。不知道怎么写?

首页