首页 > 其他分享 >Non-zero Segments VJ-HZNU-FPT1

Non-zero Segments VJ-HZNU-FPT1

时间:2023-02-25 20:35:27浏览次数:42  
标签:Non FPT1 int HZNU ll zero ans Segments

题意:给定一个序列,可以在任意相邻对中添加任意大小的数使得不存在一个子序列的和为 0,求最小添加次数。

2<=n<=200000,-109<=ai<=109;

思路:用sum求前缀和,用map存该前缀和之前是否出现过,若出现过,ans++,后面关系与前面无关,清空map。

code:
#include<iostream> #include<map> using namespace std; typedef long long ll; const int N=2e5+7;
ll a[N];
int main() {     int n;     cin>>n;     for(int i=1;i<=n;i++)     {         cin>>a[i];     }     int ans=0;     ll sum=0;     map<ll,int>mp;     mp[0]++;     for(int i=1;i<=n;i++)     {         sum+=a[i];         if(mp[sum])         {             ans++;             mp.clear();             mp[0]++;             sum=a[i];             mp[sum]++;         }         else mp[sum]++;     }     cout<<ans<<endl; }

 

标签:Non,FPT1,int,HZNU,ll,zero,ans,Segments
From: https://www.cnblogs.com/afengdabaobei/p/17155294.html

相关文章