codeforces603A
sol:
手玩之后发现,一个00(11)可以使答案+1
一个000(111)可以使答案+2
两个00(11)可以使答案+2
三个00(11)还是+2
#include <bits/stdc++.h> using namespace std; typedef int ll; inline ll read() { ll s=0; bool f=0; char ch=' '; while(!isdigit(ch)) {f|=(ch=='-'); ch=getchar();} while(isdigit(ch)) {s=(s<<3)+(s<<1)+(ch^48); ch=getchar();} return (f)?(-s):(s); } #define R(x) x=read() inline void write(ll x) { if(x<0) {putchar('-'); x=-x;} if(x<10) {putchar(x+'0'); return;} write(x/10); putchar((x%10)+'0'); } #define W(x) write(x),putchar(' ') #define Wl(x) write(x),putchar('\n') const ll N=100005; ll n,a[N]; char s[N]; int main() { ll i,lwj=1,wwx=1,cnt=0,oo=1; n=read(); scanf("%s",s+1); for(i=1;i<=n;i++) a[i]=s[i]-'0'; for(i=2;i<=n;i++) { if(a[i]!=a[i-1]) { oo=1; lwj++; } else { oo++; wwx=max(wwx,oo); cnt+=wwx-1; } } if(cnt==0) Wl(lwj); else if(cnt==1) Wl(lwj+1); else Wl(lwj+2); return 0; }
河田は河田、赤木は赤木……。
私は誰ですか。教えてください、私は誰ですか。
そうだ、俺はあきらめない男、三井寿だ!