P9883题解

· · 题解

P9883题解

算法

代码

#include<bits/stdc++.h>
const int N=1e5+5;
int n,a[N],b[N],ans;
char sc[N];
int main(){
    int T;
    scanf("%d",&T);
    for(;T--;){
        scanf("%d %s",&n,sc+1);
        ans=0;
        for(int i=1; i<=n; i++) a[i]=sc[i]-'0',b[i]=0;
        for(int i=1; i<=n; i++){
            if(!b[i]&&a[i]||b[i]==1&&!a[i]) ++ans;
            if(a[i]&&(i&-i)+i<=n) ++b[(i&-i)+i];
        }
        printf("%d\n",ans);
    }
    return 0;
}