QOJ.ac

QOJ

実行時間制限: 6 s メモリ制限: 1024 MB 満点: 10

#8418. 非常喜欢的序列 [C]

統計

3SUM 是一个著名的算法问题,要求在给定的整数序列 $c_1, c_2, \dots, c_m$ 中找到三个下标 $i < j < k$,使得 $c_i + c_j + c_k = 0$。

目前尚无针对任意整数序列解决此问题的算法,其复杂度能显著优于 $O(m^2)$。幸运的是,Bajtek 并不知道这一点,他决定解决针对他“非常喜欢的序列”的该问题。

Bajtek 的“喜欢的序列”由 $n$ 个整数 $a_1, a_2, \dots, a_n$ 组成。Bajtek 的“非常喜欢的序列”是通过考察“喜欢的序列”中所有 $\frac{n(n+1)}{2}$ 个连续子区间,计算每个子区间的元素之和,并将这些和按顺序放入一个新序列中(包含重复项)而得到的。子区间的和按子区间起始下标的升序排列;若起始下标相同,则按结束下标的升序排列。

为了增加难度,Bajtek 不仅仅满足于找到一组下标 $i < j < k$。他想知道所有满足条件的下标三元组 $i < j < k$ 的确切数量,使得对应元素之和为零。

请帮助他编写一个程序,计算出满足条件的此类三元组的数量!

输入格式

输入的第一行包含一个整数 $n$ ($1 \le n \le 500$),表示 Bajtek 的“喜欢的序列”的长度。

接下来一行包含 $n$ 个整数 $a_i$ ($|a_i| \le 20\,000$),表示 Bajtek 的“喜欢的序列”中的元素。

输出格式

输出一行,包含一个整数,表示对应于 Bajtek 的“非常喜欢的序列”中元素之和为 0 的下标三元组 $i < j < k$ 的数量。

样例

样例输入 1

3
7 -4 -2

样例输出 1

1

样例输入 2

10
0 0 0 0 0 0 0 0 0 0

样例输出 2

26235

说明

在第一个样例中,Bajtek 的“非常喜欢的序列”为 $[7, 3, 1, -4, -6, -2]$,唯一一组和为 0 的不同元素三元组是 $3 + 1 + (-4)$,因此答案为 1。

在第二个样例中,Bajtek 的“非常喜欢的序列”由 55 个零组成。对于任意三个下标 $i < j < k$,对应元素之和均为 0,这样的三元组共有 26235 个。

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.