AGC023 A-Zero-Sum Ranges (prefix sum)

Title:

Insert picture description here

solution:

考虑前缀和,
对于每个r,找有多少个l,满足sum[l]=sum[r]即可.

code:

#include <bits/stdc++.h>
#define int long long
#define PI pair<int,int>
using namespace std;
const int maxm=2e6+5;
int a[maxm];
int n;
void solve(){
    
    
    cin>>n;
    for(int i=1;i<=n;i++){
    
    
        cin>>a[i];
    }
    int s=0;
    map<int,int>mp;
    mp[0]=1;
    int ans=0;
    for(int i=1;i<=n;i++){
    
    
        s+=a[i];
        ans+=mp[s];
        mp[s]++;
    }
    cout<<ans<<endl;
}
signed main(){
    
    
    ios::sync_with_stdio(0);
    solve();
    return 0;
}

Guess you like

Origin blog.csdn.net/weixin_44178736/article/details/115031568