Codeforces Round #373 (Div. 2) B.Anatoly and Cockroaches
#include <cstdio> #include <algorithm> using namespace std; const int N = 1000010; int n, x[2], y[2]; char s[N]; int main() { scanf("%d %s", &n, s + 1); for (int i = 1; i <= n; i++) if (s[i] == 'r') x[i & 1]++; else y[i & 1]++; printf("%d", min(max(x[0], y[1]), max(x[1], y[0]))); return 0; }
#include<iostream> #include<string> #include<algorithm> #include<cmath> using namespace std; int main() { int n; while(cin>>n) { string s; cin>>s; int sum1=0,sum2=0; char pre=s[0]; bool cnt=s[0]=='r'?true:false; for(int i=1;i<s.size();i++) { if(cnt)pre='r'; else pre='b'; if(s[i]==pre) { if(cnt)sum1++; else sum2++; } cnt=!cnt; } int res; res=min(sum1,sum2)+abs(sum1-sum2); sum1=0; //b sum2=0; //r pre=s[0]; cnt=s[0]=='r'?false:true; if(cnt)sum1++; else sum2++; for(int i=1;i<s.size();i++) { if(cnt)pre='r'; else pre='b'; if(s[i]==pre) { if(cnt)sum2++; else sum1++; } cnt=!cnt; } res=min(res,min(sum1,sum2)+abs(sum1-sum2)); cout<<res<<endl; } }
大神代码 VS 我的代码