Zero-Sum Ranges

6771: Zero-Sum Ranges

时间限制: 1 Sec  内存限制: 128 MB
提交: 155  解决: 51
[提交] [状态] [命题人:admin]

题目描述

We have an integer sequence A, whose length is N.
Find the number of the non-empty contiguous subsequences of A whose sums are 0. Note that we are counting the ways to take out subsequences. That is, even if the contents of some two subsequences are the same, they are counted individually if they are taken from different positions.

Constraints
1≤N≤2×10 5
−10 9≤Ai≤10 9
All values in input are integers.

输入

Input is given from Standard Input in the following format:
N
A1 A2 … AN

输出

Find the number of the non-empty contiguous subsequences of A whose sum is 0.

样例输入

6
1 3 -4 2 2 -2

样例输出

3

提示

There are three contiguous subsequences whose sums are 0: (1,3,−4), (−4,2,2) and (2,−2).

#include <bits/stdc++.h>

using namespace std;
typedef long long ll;
const int maxn=2e5+6;
int n;
ll d[maxn],ans;
map<ll,int>p;
int main()
{
    cin>>n;
    p[0]++;
    for(int i=1;i<=n;i++)cin>>d[i];
    for(int i=1;i<=n;i++){
        d[i]=d[i]+d[i-1];
        ans+=p[d[i]];
        p[d[i]]++;
    }
    cout<<ans<<endl;
    return 0;
}

猜你喜欢

转载自www.cnblogs.com/czy-power/p/10583625.html