CF1720D2.Xor-Subsequence (hard version)
普及/提高-
通过率:0%
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
It is the hard version of the problem. The only difference is that in this version ai≤109 .
You are given an array of n integers a0,a1,a2,…an−1 . Bryap wants to find the longest beautiful subsequence in the array.
An array b=[b0,b1,…,bm−1] , where 0≤b0<b1<…<bm−1<n , is a subsequence of length m of the array a .
Subsequence b=[b0,b1,…,bm−1] of length m is called beautiful, if the following condition holds:
- For any p ( 0≤p<m−1 ) holds: abp⊕bp+1<abp+1⊕bp .
Here a⊕b denotes the bitwise XOR of a and b . For example, 2⊕4=6 and 3⊕1=2 .
Bryap is a simple person so he only wants to know the length of the longest such subsequence. Help Bryap and find the answer to his question.
这是问题的困难版本。唯一不同的是,在这个版本中 ai≤109 .
给你一个由 n 个整数 a0,a1,a2,…an−1 组成的数组。布里亚普想找出数组中最长的优美子序列。
数组 b=[b0,b1,…,bm−1] 中的 0 \le b_0 < b_1 < \ldots < b_{m - 1} < n 是数组 a 中长度为 m 的子序列。
如果以下条件成立,则长度为 m 的子序列 b=[b0,b1,…,bm−1] 称为优美序列:
- 对于任意 p ( 0 \le p < m - 1 ) 都成立: a_{b_p} \oplus b_{p+1} < a_{b_{p+1}} \oplus b_p .
这里的 a⊕b 表示 a 和 b 的 bitwise XOR。例如, 2⊕4=6 和 3⊕1=2 。
Bryap 是个简单的人,所以他只想知道最长的子序列的长度。请帮助 Bryap 找到问题的答案。
输入格式
The first line contains a single integer t ( 1≤t≤105 ) — the number of test cases. The description of the test cases follows.
The first line of each test case contains a single integer n ( 2≤n≤3⋅105 ) — the length of the array.
The second line of each test case contains n integers a0,a1,...,an−1 ( 0≤ai≤109 ) — the elements of the array.
It is guaranteed that the sum of n over all test cases does not exceed 3⋅105 .
输入
第一行包含一个整数 t ( 1≤t≤105 )--测试用例数。测试用例说明如下。
每个测试用例的第一行包含一个整数 n ( 2≤n≤3⋅105 )( 2≤n≤3⋅105 ) - 数组的长度。
每个测试用例的第二行包含 n 个整数 a0,a1,...,an−1 ( 0≤ai≤109 ) - 数组的元素。
保证所有测试用例中 n 的总和不超过 3⋅105 。
输出格式
For each test case print a single integer — the length of the longest beautiful subsequence.
输出
为每个测试用例打印一个整数--最长优美子序列的长度。
输入输出样例
输入#1
3 2 1 2 5 5 2 4 3 1 10 3 8 8 2 9 1 6 2 8 3
输出#1
2 3 6
说明/提示
In the first test case, we can pick the whole array as a beautiful subsequence because 1⊕1<2⊕0 .
In the second test case, we can pick elements with indexes 1 , 2 and 4 (in 0 indexation). For this elements holds: 2⊕2<4⊕1 and 4⊕4<1⊕2 .
备注
在第一个测试案例中,我们可以选择整个数组作为优美的子序列,因为 1⊕1<;2⊕0 .
在第二个测试用例中,我们可以选取索引为 1 、 2 和 4 (在 0 索引中)的元素。对于这些元素,我们可以 2⊕2<;4⊕1 和 4⊕4<;1⊕2 。