https://www.luogu.com.cn/problem/P1114
前缀和,相对差
黄色题
思路:
引入相对差的概念。即a[i]表示第i个位置男生人数-女生人数的差值。
那么差值相等的两个位置之间的人数是满足男女相等的。(仔细体会)
从此统计l[a[i]]和r[a[i]]。
特别要注意的是a[0]=0 统计的时候要把0的位置当做差为0的起点。
#include <bits/stdc++.h> using namespace std; int l[200010],r[200010],sum1,sum0,ans,n; int main() { cin>>n; for (int i=1;i<=n;i++){ int x; cin>>x; sum1+=(x==1), sum0+=(x==0); int t=sum0-sum1+n; if (!l[t]&&t!=n) l[t]=i; else r[t]=i; } for (int i=0;i<=2*n;i++) ans=max(ans,r[i]-l[i]); cout<<ans<<endl; return 0; }
标签:P1114,int,sum1,sum0,计划,男女,200010 From: https://www.cnblogs.com/2elaina/p/16601607.html