codeforces 716 B. Anatoly and Cockroaches(greedy)

来源:互联网 发布:软件分析师考试 编辑:程序博客网 时间:2024/06/04 18:04

题意:给一些在一排的蟑螂涂色或者两两交换位置,使最终的颜色交替出现,输出最小步数

枚举两种r和b在开头位置的情况,取最小,推一下计算公式就出来了

#include<cstring>#include<string>#include<iostream>#include<queue>#include<cstdio>#include<algorithm>#include<map>#include<cstdlib>#include<cmath>#include<vector>//#pragma comment(linker, "/STACK:1024000000,1024000000");using namespace std;#define INF 0x3f3f3f3fchar col[100006];int n;int solve(char c){    int sam=0,dif=0;    for(int i=0;i<n;i+=2)    {        if(col[i]==c) sam++;    }    for(int i=1;i<n;i+=2)    {        if(col[i]==c) dif++;    }    int ans=min((((n+1)/2)-sam),dif);    return dif+(((n+1)/2)-sam)-ans;}int main(){    scanf("%d",&n);    scanf("%s",col);    int ans1=solve('r');    int ans2=solve('b');    printf("%d\n",min(ans1,ans2));    return 0;}
0 0