P1114 “非常男女”计划
反思
前缀和处理区间和问题
观察到男女数相同以及输入数据01,有一种互斥相消的感觉,我们可以令0为-1,当某个区间段的和为零,即某两个前缀和相同时,记录其最长距离
code
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n;
cin>>n;
int a[100005]={0};
int pres=0;
map<int,int> q;
q[0]=0;
int ans=0;
for(int i=1;i<=n;i++)
{
cin>>a[i];
if(!a[i])a[i]=-1;
pres+=a[i];
if(!q.count(pres)) q[pres]=i;
else ans=max(ans,i-q[pres]);
}
cout<<ans<<endl;
return 0;
}

浙公网安备 33010602011771号