#P14218. [2026队测系列]能量脉冲片段统计

    ID: 13427 传统题 1000ms 1024MiB 尝试: 6 已通过: 1 难度: 7 上传者: 标签>CF2200分治ST表前缀和数学数据结构枚举字符串哈希

[2026队测系列]能量脉冲片段统计

题目三:

题目背景

在“星港远征计划”中,推进器的能量脉冲被记录为一个序列。
ii 段脉冲若标记为 AiA_i,则它的实际能量值被记作 2Ai2^{A_i}
工程师希望从连续的一段脉冲中抽取能量,只有当这段总能量恰好仍然是一个 2 的幂 时,这段脉冲才算“完美共振片段”。

请你统计整条脉冲记录中,一共有多少个这样的连续区间。

题目描述

给定一个长度为 NN 的非负整数序列 A=(A1,A2,,AN)A=(A_1,A_2,\ldots,A_N)

请统计有多少个整数对 (l,r)(l,r)(满足 1lrN1 \le l \le r \le N),使得

2Al+2Al+1++2Ar2^{A_l}+2^{A_{l+1}}+\cdots+2^{A_r}

恰好是一个 2 的幂

这里,2 的幂 指可以表示成 2k2^k 的数,其中 kk 是某个非负整数。


输入格式

输入从标准输入给出,格式如下:

N
A1 A2 ... AN

输出格式

输出一个整数,表示满足条件的 (l,r)(l,r) 的个数。


样例 #1

输入

4
0 1 0 2

输出

6

说明

满足条件的区间为:

  • (1,1)(1,1)
  • (1,3)(1,3)
  • (1,4)(1,4)
  • (2,2)(2,2)
  • (3,3)(3,3)
  • (4,4)(4,4)

66 个。


样例 #2

输入

4
100 100 100 100

输出

8

样例 #3

输入

10
3 2 2 3 2 4 1 1 0 0

输出

19

数据范围

  • 1N2×1051 \le N \le 2 \times 10^5
  • 0Ai2×1050 \le A_i \le 2 \times 10^5
  • 输入中的所有值均为整数