码迷,mamicode.com
首页 > 其他好文 > 详细

vijosP1195“非常男女”计划

时间:2015-10-23 11:32:04      阅读:132      评论:0      收藏:0      [点我收藏+]

标签:

vijosP1195“非常男女”计划

 

链接:https://vijos.org/p/1195

 

【思路】

   人数差。

   人数差相等的两点之间的区间一定有男女人数相等。

   计目前为止到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 }

 

vijosP1195“非常男女”计划

标签:

原文地址:http://www.cnblogs.com/lidaxin/p/4903799.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!