zoukankan      html  css  js  c++  java
  • vijosP1195“非常男女”计划

    vijosP1195“非常男女”计划

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

    【思路】

       人数差。

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

       计目前为止到i的1为sum1,0为sum0,则人数差为t,用l [t] 数组记录差值t出现的最左点,比较得ans。

       需要注意N是偏移量,化负为正,l[0+N]初始为0且防止被覆盖。

    【代码】

     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 }
  • 相关阅读:
    bzoj2045: 双亲数&bzoj1101: [POI2007]Zap
    spoj GCDEX
    jQuery Ajax
    jQuery 动画效果
    jQuery 事件处理API
    jQuery 常用getter&setter
    jQuery 文档操作
    jQuery 基础
    Vue2.2.0+新特性整理
    JavaScript中的HTTP
  • 原文地址:https://www.cnblogs.com/lidaxin/p/4903799.html
Copyright © 2011-2022 走看看