#CF1766E. 分解总和

分解总和

分解总和

  • 时间限制:5 秒
  • 内存限制:512 MiB

题目描述

对一个整数序列 [x1,x2,…,xk][x_1,x_2,\ldots,x_k],按如下规则进行分解。

从左到右处理各元素,并维护一个有序的子序列列表。处理 xix_i 时,把它接到列表中第一个满足“末尾元素与 xix_i 的按位与大于 00”的子序列末尾;若不存在这样的子序列,就新建只含 xix_i 的子序列并放在列表末尾。

记 f([x1,x2,…,xk])f([x_1,x_2,\ldots,x_k]) 为最终子序列个数。

给定长度为 nn 的序列 aa,计算

∑i=1n∑j=inf(a[i..j]).\sum_{i=1}^{n}\sum_{j=i}^{n}f(a[i..j]).

输入格式

第一行一个整数 nn。

第二行 nn 个整数 a1,a2,…,ana_1,a_2,\ldots,a_n。

输出格式

输出一行一个整数,表示所求总和。

样例输入 1

8
1 3 2 0 1 3 2 1

样例输出 1

71

样例输入 2

5
0 0 0 0 0

样例输出 2

35

数据范围

  • 1≤n≤3⋅1051\le n\le3\cdot10^5;
  • 0≤ai≤30\le a_i\le3。
子任务编号 分值 特殊限制
1 20 n≤80n\le80
2 40 n≤1500n\le1500
3 无特殊限制