#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; } } } |