C. Eugene and an array(思维)

在这里插入图片描述

我和大佬的差距在于:大佬6分钟AC,而我2个小时也想不出来
这几天一点状态没有,浑浑噩噩

代码:

#include <bits/stdc++.h>
#define ll long long
using namespace std;

ll a[200005];
ll sum[200005];
map<ll,ll>Map;
int main()
{
    
    
    ll n;
    scanf("%lld",&n);
    for(int i=1;i<=n;i++)
    {
    
    
        scanf("%lld",&a[i]);
    }
    ll p=-1,ans=0;
    Map[0]=0;
    for(int i=1;i<=n;i++)
    {
    
    
        //Map[sum [i]]++;
        sum[i]=sum[i-1]+a[i];
        if(Map.count(sum[i]))
        {
    
    
            p=max(p,Map[sum[i]]);
        }
        ans+=i-p-1;
        Map[sum[i]]=i;
    }
    printf("%lld\n",ans);
    return 0;
}

猜你喜欢

转载自blog.csdn.net/qq_43781431/article/details/105741579