Logo Wy Online Judge

WyOJ

#725. A. 好数组

A. 好数组(Eugene and an array)

项目 内容
时间限制 1 秒
内存限制 256 MB
输入 / 输出 标准输入 / 标准输出

题目描述

Eugene 喜欢处理数组,今天他需要你的帮助来解决一个挑战性的任务。

若数组 c 可以由数组 b 通过删除开头若干个(可能为零个或全部)元素、再删除末尾若干个(可能为零个或全部)元素得到,则称 cb 的一个子数组

我们称一个非空数组是"好"的,当且仅当它的每一个非空子数组的元素和都不为 0

例如,数组 [-1, 2, -3] 是好的,因为它的所有子数组 [-1][-1,2][-1,2,-3][2][2,-3][-3] 的元素和都不为 0。

而数组 [-1, 2, -1, -3] 不是好的,因为它的子数组 [-1, 2, -1] 的元素和为 0。

给定一个长度为 n 的数组 a,请你帮忙计算 a非空的好子数组的数量。

输入格式

第一行包含一个整数 n1 ≤ n ≤ 2×10⁵)——数组 a 的长度。

第二行包含 n 个整数 a₁, a₂, ..., aₙ−10⁹ ≤ aᵢ ≤ 10⁹)——数组 a 的元素。

输出格式

输出一个整数——a 中好子数组的数量。

样例

样例 1

输入:

3
1 2 -3

输出:

5

说明:好子数组为 [1][1,2][2][2,-3][-3]。而 [1,2,-3] 不是好的,因为它的子数组 [1,2,-3] 元素和为 0。

样例 2

输入:

3
41 -41 41

输出:

3

说明:三个长度为 1 的子数组是仅有的好子数组。[41,-41,41] 不是好的,因为子数组 [41,-41] 元素和为 0。

数据范围与子任务

子任务 分值 数据范围 特殊性质
1 20% n ≤ 100
2 30% n ≤ 2000
3 50% n ≤ 2×10⁵
  • 对于 100% 的数据:1 ≤ n ≤ 2×10⁵−10⁹ ≤ aᵢ ≤ 10⁹
题目信息
  • 难度 UKE
  • 控制组 group_default
  • 时间限制 1 s
  • 空间限制 256 MB
  • 数据大小 6.222 MB
提交统计
  • 提交数 108
  • 通过数 28
  • 通过率 25.9%