问题 6663 --龙哥战吸血鬼

6663: 龙哥战吸血鬼★★★

时间限制: 1 Sec  内存限制: 128 MB
提交: 14  解决: 9
[提交][状态][命题人:]

题目描述

龙哥正在与迪奥的吸血鬼手下战斗。共有n个吸血鬼,它们的强度分别为a1,a2,⋯,an。将(l,r)表示由索引l到r的吸血鬼组成的一组。龙哥意识到每个这样的组的强度取决于它们的最弱环节,即按位与操作。更具体地说,组(l,r) 的强度等于f(l,r)=a[l] & a[l+1] & a[l+2]&⋯& a[r]。这里,& 表示按位与操作。
龙哥希望能快速击败这些吸血鬼手下,因此他会将吸血鬼分成连续的组,使得每个吸血鬼正好属于一组,并且这些组的强度之和尽量小。在所有可能的分组方式中,他希望找到组数最多的方式。
给定每个吸血鬼的强度,找出在所有可能的分组方式中,拥有最小强度之和的组的最大数量。

输入

第一行包含一个整数T(1≤T≤10000),表示测试用例的数量。接下来是每个测试用例的描述。
每个测试用例的第一行包含一个整数n(1≤n≤200000),表示吸血鬼的数量。
每个测试用例的第二行包含n个整数a1,a2,⋯,an(0≤ai≤1e9),表示每个吸血鬼的个体强度。
测试用例保证n的总和不超过200000。

输出

对于每个测试用例,输出一个整数,表示在所有可能的分组方式中,拥有最小强度之和的组的最大数量。
样例输入
Copy
3
3
1 2 3
5
2 3 1 5 2
4
5 7 12 6
样例输出
Copy
1
2
1

提示

在第一个测试用例中,最优的方式是将所有的吸血鬼作为一组。所以f(1,3)=1 & 2 & 3=0。
在第二个测试用例中,最优的方式是分成两组,(2,3,1)和(5,2)。所以f(1,3)+f(4,5)=(2 & 3 & 1)+(5 & 2)=0+0=0。

来源

 

[提交][状态]