#gear. 2026提高组模拟赛08-T3 程老师的变速箱

2026提高组模拟赛08-T3 程老师的变速箱

时间限制:1000ms 内存限制:512MB

题目描述

程老师这周在检修一台老式变速箱。拆开外壳,轴上齐齐整整排着 nn 个齿轮,第 ii 个齿轮的齿数是 aia_i,检修单上一个个都量好记下了。编号从进给端开始,11 号在最外头,nn 号在最里头,位置是焊死的,谁也不许换。

老师傅判断两个齿轮的配合度,看的不是齿数差,而是"咬合纹"。工程上把一对齿轮的咬合纹定义为它们齿数的按位异或值。什么叫按位异或?把两个数都写成二进制,对齐之后逐位比较:相同记 00,不同记 11,拼回去得到的数就是异或结果。比如 55(二进制 101101)和 33(二进制 011011)的异或是 66(二进制 110110);再比如 88(二进制 10001000)和 77(二进制 01110111),四位全都不同,异或是 1515(二进制 11111111)——这是四位二进制里能拿到的最大值。咬合纹越大,说明两个齿轮的齿形在更多位上互补,配合起来越有讲究,越值得记进修检报告。

不过变速箱里有个物理限制:齿轮都穿在同一根轴上,离得太远的两个齿轮中间隔着别人,根本碰不到一块儿。检修手册写得明白:只有编号之差不超过 dd 的两个齿轮才有可能真正啮合。换句话说,齿数再互补,编号离远了也只能干看着——齿数最大的那个齿轮和跟它最互补的那个,往往偏偏隔着老远。检修的时候老师傅只能拿着卡尺在轴上比划:从每个位置往前后各数 dd 个,只有落在这一小段里的,才算得上"能对上眼"的候选。

程老师想知道:在所有可能啮合的齿轮对里,最大的咬合纹是多少。也就是找一对 i<ji < jjidj - i \le d,使 aiaja_i \oplus a_j 最大(\oplus 表示按位异或)。注意他要的只是这个最大值本身,并不需要报告是哪两个齿轮取到的。

这台变速箱是上世纪的老古董,轴上的齿轮多的时候能有几十万个,齿数也是有大有小,大的能到十亿量级。老师傅年纪大了,眼神跟不上:从前还能拿着检修单一对一对地比划,现在光是齿轮编号就数得眼花。更要命的是,轴上各区段疏密不一,拨叉行程 dd 每次检修还要根据磨损情况重新校准,并不是定数。程老师看着满桌子的检修单直犯愁:一对一对地算异或、再比大小,算到猴年马月也算不完——得想个快办法。

临走前,老师傅把程老师拉到一边又补了一句:轴上的齿轮偶尔会有齿数一模一样的,碰到了也别嫌麻烦,照样按规矩算;还有,编号是焊死在轴上的,哪个跟哪个离得近,看编号差就知道了,不用去量实物距离。程老师把这两条也记进了注意事项。第二天一早,他就坐在检修台前,对着密密麻麻的齿数表开始琢磨:总不能真的一对一对试过去。

输入格式

第一行两个整数 n,dn, d,表示齿轮数和最大允许编号差。

第二行 nn 个整数 a1,a2,,ana_1, a_2, \ldots, a_n,表示每个齿轮的齿数。

输出格式

一行一个整数,表示最大咬合纹。

数据范围

测试点编号 nn \le 特殊性质
1 ~ 2 2020
3 ~ 6 10310^3
7 ~ 8 5×1035 \times 10^3 d500d \le 500
9 ~ 10 2×1052 \times 10^5 A
11 ~ 12 B
13 ~ 16 10510^5
17 ~ 20 2×1052 \times 10^5
  • 特殊性质 A:ai1023a_i \le 1023
  • 特殊性质 B:d=1d = 1
  • 对于全部数据,2n2×1052 \le n \le 2 \times 10^51dn11 \le d \le n - 10ai1090 \le a_i \le 10^9

样例

样例 1

输入

5 2
8 1 1 1 7

输出

9

解释:齿数 8877 的异或是 1515,很诱人——但它们分别在 11 号和 55 号位,编号差 4>d=24 > d = 2,根本碰不到。编号差不超过 22 的对里,最大的是 11 号位(88)和 22 号位(11)的啮合:81=98 \oplus 1 = 911 号位和 33 号位也是 99)。

样例 2

输入

4 1
5 3 6 2

输出

6

解释d=1d = 1,只有相邻齿轮能啮合:53=65 \oplus 3 = 636=53 \oplus 6 = 562=46 \oplus 2 = 4,最大为 66

样例 3

输入

2 1
0 0

输出

0

解释:唯一的一对齿轮齿数都是 0000=00 \oplus 0 = 0

难度 提高+/省选
通过率 25%
尝试 8
已通过 2
ID
665
类型
传统题
Time Limit
1000ms
Memory Limit
512MiB
上传者

相关

在下列比赛中:

暑假CSP-S模拟赛 第1场