返回小组 开始 2026-07-13 10:00:00

2026CSP-J模拟卷3

结束 2026-07-13 17:00:00
Contest is over.
当前 2026-07-22 17:46:01

D. 与运算

描述

小项的有一个长度为n的数组a_1,a_2,...,a_n。一个区间l,r的权值为$al,a{l+1},...,a_r$的二进制按位与运算。在 C++ 或 Python 中,可以直接使用 & 运算符表示与运算,也就是$al&a{l+1}&...&a_r$。

小项希望在数组种选择尽可能多的,互不相交的区间,使得每个区间的权值均为2^k。(k为自然数)

区间\left[l_1,r_1\right],\left[l_2,r_2\right]相交当且仅当两个区间同时包含至少一个相同的下标,即存在 1≤i≤n 使得 l_1\le i\le r_1l_2\le i\le r_2

你需要帮助小项求出他能选出的区间数量的最大值。

输入

从文件and.in中读入数据。输入第一行包含一个正整数n。

第二行包含n个数字,分别表示a_1,a_2,...,a_n

输出

输出到文件and.out中。输出仅一个数字,表示区间数量的最大值。

样例

输入

5
1 2 4 8 4

输出

5

输入

10
11 7 3 9 5 14 12 15 1 11 

输出

3

提示

【样例1解释】

每个元素都是2^k,每个元素单独一个区间最优。

【样例2解释】

其中一种最优的方案是区间[3,4]、[5,6]、[9,9]。

区间[3,4]是3&9=1。

区间[5,6]是5&14=4。

对于所有测试数据有保证1\le n\le{2\times10}^5,1\le\ a_i\le2147483647


Submit

登录

注册
时间限制 1 秒
内存限制 128 MB
提交