#include <bits/stdc++.h> using namespace std; int to, tw[100007]={}, n, t[100007]={}, jed, tenhuj1, tenhuj2, wyn; string a; int zmeczony(int x) { int w=0; for(int i=jed-2;i>=0;i--) { if(t[i]-x<=0) break; if(t[i]-x<=2) {w+=1; break;} else { w+=t[i]-x-1; x+=4; } } return w; } void clearall(int z) { for(int i=0;i<z;i++) { t[i]=0; } jed=0; tenhuj1=0; tenhuj2=0; wyn=0; } int main() { ios_base::sync_with_stdio(0); cin.tie(0); cin>>to; for(int q=0;q<to;q++) { cin>>n>>a; for(int i=0;i<n;i++) { if((int)a[i]-48==1) { t[jed]=i; jed++; } } if(jed==0) tw[q]=0; else if(jed==n) tw[q]=n; else { tenhuj1=t[0]; tenhuj2=n-t[jed-1]-1; for(int i=1;i<jed;i++) { t[i-1]=t[i]-t[i-1]-1; } sort(t, t+jed-1); wyn=max(wyn, zmeczony(0)); wyn=max(wyn, zmeczony(2)+tenhuj1); wyn=max(wyn, zmeczony(2)+tenhuj2); wyn=max(wyn, zmeczony(4)+tenhuj1+tenhuj2-1); tw[q]=n-wyn; } clearall(jed); } for(int i=0;i<to;i++) { cout<<tw[i]<<endl; } return 0; }
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 | #include <bits/stdc++.h> using namespace std; int to, tw[100007]={}, n, t[100007]={}, jed, tenhuj1, tenhuj2, wyn; string a; int zmeczony(int x) { int w=0; for(int i=jed-2;i>=0;i--) { if(t[i]-x<=0) break; if(t[i]-x<=2) {w+=1; break;} else { w+=t[i]-x-1; x+=4; } } return w; } void clearall(int z) { for(int i=0;i<z;i++) { t[i]=0; } jed=0; tenhuj1=0; tenhuj2=0; wyn=0; } int main() { ios_base::sync_with_stdio(0); cin.tie(0); cin>>to; for(int q=0;q<to;q++) { cin>>n>>a; for(int i=0;i<n;i++) { if((int)a[i]-48==1) { t[jed]=i; jed++; } } if(jed==0) tw[q]=0; else if(jed==n) tw[q]=n; else { tenhuj1=t[0]; tenhuj2=n-t[jed-1]-1; for(int i=1;i<jed;i++) { t[i-1]=t[i]-t[i-1]-1; } sort(t, t+jed-1); wyn=max(wyn, zmeczony(0)); wyn=max(wyn, zmeczony(2)+tenhuj1); wyn=max(wyn, zmeczony(2)+tenhuj2); wyn=max(wyn, zmeczony(4)+tenhuj1+tenhuj2-1); tw[q]=n-wyn; } clearall(jed); } for(int i=0;i<to;i++) { cout<<tw[i]<<endl; } return 0; } |