#include <bits/stdc++.h>
using namespace std;
int n,w,pom,pom1,ggg,poc,kon,fg;
char z;
vector<int>t;
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
cin>>ggg;
for(int jk=0; jk<ggg; jk++)
{
cin>>n;
t.clear();
w=0;
fg=0;
t.push_back(0);
for(int j=0; j<n; j++)
{
cin>>z;
if(z=='0')
{
pom++;
fg++;
}
else
{
if(pom==j)
{
poc=pom;
}
else
{
t.push_back(pom);
}
pom=0;
}
}
kon=pom;
sort(t.begin(), t.end());
pom=0;
pom1=t.size()-1;
while(pom1>0&&(t[pom1]-2*pom-1>=0||poc-pom>0||kon-pom>0))
{
//cout<<t[pom1]<<" "<<poc<<" "<<kon<<"\n";
if(poc-pom>t[pom1]-2*pom-1&&poc-pom>kon-pom)
{
w+=poc-pom;
pom++;
poc=0;
// cout<<"poc";
}
else
{
if(kon-pom>t[pom1]-2*pom-1)
{
w+=kon-pom;
kon=0;
pom++;
//cout<<"kon";
}
else
{
if(t[pom1]-2*pom-1==0)
{
w+=t[pom1]-2*pom;
pom++;
pom1--;
// cout<<"sus";
}
else
{
w+=t[pom1]-2*pom-1;
pom+=2;
pom1--;
//cout<<"sus";
}
}
}
// cout<<w;
}
if(fg==n)
cout<<"0\n";
else
cout<<n-w<<"\n";
}
}
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 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 | #include <bits/stdc++.h> using namespace std; int n,w,pom,pom1,ggg,poc,kon,fg; char z; vector<int>t; int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); cin>>ggg; for(int jk=0; jk<ggg; jk++) { cin>>n; t.clear(); w=0; fg=0; t.push_back(0); for(int j=0; j<n; j++) { cin>>z; if(z=='0') { pom++; fg++; } else { if(pom==j) { poc=pom; } else { t.push_back(pom); } pom=0; } } kon=pom; sort(t.begin(), t.end()); pom=0; pom1=t.size()-1; while(pom1>0&&(t[pom1]-2*pom-1>=0||poc-pom>0||kon-pom>0)) { //cout<<t[pom1]<<" "<<poc<<" "<<kon<<"\n"; if(poc-pom>t[pom1]-2*pom-1&&poc-pom>kon-pom) { w+=poc-pom; pom++; poc=0; // cout<<"poc"; } else { if(kon-pom>t[pom1]-2*pom-1) { w+=kon-pom; kon=0; pom++; //cout<<"kon"; } else { if(t[pom1]-2*pom-1==0) { w+=t[pom1]-2*pom; pom++; pom1--; // cout<<"sus"; } else { w+=t[pom1]-2*pom-1; pom+=2; pom1--; //cout<<"sus"; } } } // cout<<w; } if(fg==n) cout<<"0\n"; else cout<<n-w<<"\n"; } } |
English