CF 604C Alternative Thinking#贪心
#include<iostream> #include<cstdio> #include<cstring> using namespace std; const int MAXN=100005; char s[MAXN]; int main() { int n; scanf("%d",&n); scanf("%s",s);//输入01串 int origin=1,flip=0; for(int i=1;i<strlen(s);i++) { if(s[i]==s[i-1]) flip++;//00或11 else origin++;//01或10 } if(flip>2) flip=2; //由于不管怎样改变原01串,只有两端关系(可能从11->10/10->11等)会受影响,中间的01串数量仍不变 //所以flip最多就是增加2 printf("%d\n",origin+flip); }