51nod 1393 1393 0和1相等串

Posted Crazy、baby

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了51nod 1393 1393 0和1相等串相关的知识,希望对你有一定的参考价值。

https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1393

 

当0和1的数量差值为0时,进行记录和ans进行比较,其他的,差值相等时,0和1的数量一定相等。用后面的减前面的情况。

 

#include<bits/stdc++.h>
using namespace std;
char s[1000005];
int a[1000005],b[1000005];
map<int,int>m;
main()
{
    int len,i,ans=0,t;
    scanf("%s",s);
    len=strlen(s);
    for(i=0;i<len;i++)
    {
        a[i+1]=a[i];
        b[i+1]=b[i];
        if(s[i]==0)
        a[i+1]++;
        if(s[i]==1)
        b[i+1]++;
        t=b[i+1]-a[i+1];
        if(t==0)
        ans=max(ans,i+1);
        else
        {
            if(m[t])
            ans=max(i+1-m[t],ans);
            else
            m[t]=i+1;
        }
    }
    printf("%d",ans);
}

 

以上是关于51nod 1393 1393 0和1相等串的主要内容,如果未能解决你的问题,请参考以下文章

51nod 1393 0和1相等串 思路 : map存前缀和

上古卷轴5 顶级代码高于player.additem player.AddItem 1393d 1等详细解答

UVA 1393 Highways(数学思想)

51nod-1396还是01串

UVA 1393 Highways

51nod 还是01串