Educational Codeforces 30 B. Balanced Substring 前缀和&&思维

题意:

给一个01串寻找一个最长字串,这个字串中的0和1数量相等

思路:

将0变成-1,求前缀和,两个位置前缀和大小相等,说明这之间的01数量相等

注意!第0位的前缀和位0

#include
#include
using namespace std;
int sum[100010];
char s[100010];
mapq;
int main(){
    int n,ans=0;
    cin>>n>>s+1;
    for(int i=1;i<=n;i++){
        if(s[i]=='0')sum[i]=sum[i-1]-1;
        else sum[i]=sum[i-1]+1;
        if(q[sum[i]]==0&&sum[i]!=0){
            q[sum[i]]=i;
        }
        else{
            ans=max(ans,i-q[sum[i]]);
//            cout<

 

你可能感兴趣的:(思维,前缀和)