#include <bits/stdc++.h>
using namespace std;
int main(){
ios_base::sync_with_stdio(0);
cin.tie(0);
int T;
cin>>T;
for(int t=0;t<T;t++){
int n;
cin>>n;
vector<bool> vec;
for(int i=0;i<n;i++){
char a;
cin>>a;
int b=a;
b-=48;
vec.emplace_back(b);
}
bool one=1;
vector<pair<long long,long long> > g;
if(vec[0]==0){
g.emplace_back(make_pair(0,0));
one=0;
}
for(int i=0;i<n;i++){
if(vec[i]==0){
if(one==1){
g.emplace_back(make_pair(1,1));
one=0;
}
else{
g[g.size()-1].first++;
}
}
else{
if(one==0)
g[g.size()-1].second++;
one=1;
}
}
sort(g.begin(),g.end());
int time=0;
long long wyn=n;
if(g[0].second==0){
cout<<0<<endl;
}
else{
for(int i=g.size()-1;i>=0;i--){
if(g[i].first<=0){
break;
}
long long pom=0;
pom=g[i].second-1;
if(g[i].first==1){
wyn-=1;
}
else{
wyn-=(g[i].first-pom);
}
for(int j=i-1;j>=0;j--){
g[j].first-=g[j].second;
}
sort(g.begin(), g.end());
}
cout<<wyn<<endl;
}
}
}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 | #include <bits/stdc++.h> using namespace std; int main(){ ios_base::sync_with_stdio(0); cin.tie(0); int T; cin>>T; for(int t=0;t<T;t++){ int n; cin>>n; vector<bool> vec; for(int i=0;i<n;i++){ char a; cin>>a; int b=a; b-=48; vec.emplace_back(b); } bool one=1; vector<pair<long long,long long> > g; if(vec[0]==0){ g.emplace_back(make_pair(0,0)); one=0; } for(int i=0;i<n;i++){ if(vec[i]==0){ if(one==1){ g.emplace_back(make_pair(1,1)); one=0; } else{ g[g.size()-1].first++; } } else{ if(one==0) g[g.size()-1].second++; one=1; } } sort(g.begin(),g.end()); int time=0; long long wyn=n; if(g[0].second==0){ cout<<0<<endl; } else{ for(int i=g.size()-1;i>=0;i--){ if(g[i].first<=0){ break; } long long pom=0; pom=g[i].second-1; if(g[i].first==1){ wyn-=1; } else{ wyn-=(g[i].first-pom); } for(int j=i-1;j>=0;j--){ g[j].first-=g[j].second; } sort(g.begin(), g.end()); } cout<<wyn<<endl; } } } |
English