标签:
vijosP1195“非常男女”计划
【思路】
人数差。
人数差相等的两点之间的区间一定有男女人数相等。
计目前为止到i的1为sum1,0为sum0,则人数差为t,用l [t] 数组记录差值t出现的最左点,比较得ans。
【代码】
1 #include<iostream> 2 #include<cstdio> 3 using namespace std; 4 5 const int maxn = 200000+10; 6 const int N=100000+2; 7 int l[maxn],r; 8 int n; 9 10 inline int read_int() { 11 char c=getchar(); 12 while(!isdigit(c)) c=getchar(); 13 int x=0; 14 while(isdigit(c)) { 15 x=x*10+c-‘0‘; 16 c=getchar(); 17 } 18 return x; 19 } 20 int main() { 21 n=read_int(); 22 int ans=0; 23 int sum0=0,sum1=0; 24 l[0+N]=0; 25 for(int i=1;i<=n;i++) { 26 int x=read_int(); 27 if(x) sum1++; else sum0++; 28 int t=sum1-sum0+N; 29 if((t-N)&&!l[t]) l[t]=i; 30 ans=max(ans,i-l[t]); 31 } 32 cout<<ans; 33 return 0; 34 }
标签:
原文地址:http://www.cnblogs.com/lidaxin/p/4903799.html