题目链接:http://codeforces.com/problemset/problem/719/B

题目大意:

  有一队蟑螂用字符串表示,有黑色 ‘b’ 和红色 'r' 两种颜色,你想使这队蟑螂颜色分布是交叉的,你有两种做法:

    一次调整任意两个交换位置,或者一次给一个蟑螂染色

  问,最少操作多少次可以使得蟑螂的颜色分布是交叉的。

解题思路:

  刚看完题,就想到用一个字符接受第一个蟑螂的颜色【下标从0开始】,for 如果 是奇数则 应该与第一蟑螂的颜色不同,如果相同 ++c1,如果是偶数,就应该与第一个蟑螂的颜色相同,否则++c2。然后找 max(c1,c2)-》c1 要与 c2相匹配的次数+剩余的部分是用燃料涂色的次数,即找到c1 c2中的最大值即可。

  说了这么多可惜上面的思路只是对了一大半。0.o

  如果按照上面的思路,操作的次数要取决于第一个字符,如果【修改第一个比按第一个计算存在更少的情况,答案就会出问题】,解决方法:自定义第一元素【存在两种可能 ‘r’ ‘b’ 】,然后按照上面的方法从第一元素比较(下标 0),得到结果,将两种结果找到一较小值即是最终答案。

AC Code:

 #include<bits/stdC++.h>
using namespace std;
char ca[];
int solve(char c,int n)
{
int c1=,c2=;
for(int i=; i<n; i++)
{
if(c=='r')
{
if(i&&&ca[i]!='r')
++c1;
else if((!(i&))&&ca[i]!='b')
++c2;
}
else
{
if(i&&&ca[i]!='b')
++c1;
else if((!(i&))&&ca[i]!='r')
++c2;
}
}
return max(c1,c2);
}
int main()
{
int n;
while(scanf("%d",&n)!=EOF)
{
scanf("%s",ca);
cout<<min(solve('r',n),solve('b',n))<<endl;
}
return ;
}

Codeforces 719B Anatoly and Cockroaches(元素的交叉排列问题)的更多相关文章

  1. Codeforces 719B Anatoly and Cockroaches

    B. Anatoly and Cockroaches time limit per test:1 second memory limit per test:256 megabytes input:st ...

  2. CodeForces 719B Anatoly and Cockroaches 思维锻炼题

    题目大意:有一排蟑螂,只有r和b两种颜色,你可以交换任意两只蟑螂的位置,或涂改一个蟑螂的颜色,使其变成r和b交互排列的形式.问做少的操作次数. 题目思路:更改后的队列只有两种形式:长度为n以r开头:长 ...

  3. CodeForces 719B Anatoly and Cockroaches (水题贪心)

    题意:给定一个序列,让你用最少的操作把它变成交替的,操作有两种,任意交换两种,再就是把一种变成另一种. 析:贪心,策略是分别从br开始和rb开始然后取最优,先交换,交换是最优的,不行再变色. 代码如下 ...

  4. Codeforces Round #373 (Div. 2) B. Anatoly and Cockroaches 水题

    B. Anatoly and Cockroaches 题目连接: http://codeforces.com/contest/719/problem/B Description Anatoly liv ...

  5. Codeforces Round #373 (Div. 2) Anatoly and Cockroaches —— 贪心

    题目链接:http://codeforces.com/contest/719/problem/B B. Anatoly and Cockroaches time limit per test 1 se ...

  6. B. Anatoly and Cockroaches

    B. Anatoly and Cockroaches time limit per test 1 second memory limit per test 256 megabytes input st ...

  7. justify-content 定义子元素在父元素水平位置排列的顺序

    justify-content 定义子元素在父元素水平位置排列的顺序,需要和display:flex使用才会生效. 有五个属性: 1.flex-start(默认值)  左对齐 2.flex-end 右 ...

  8. 求一个集合S中m个元素的所有排列以及一个数组A的全排列—递归实现版完整代码

    说明,本文全文代码均用dart语言实现. 求一个集合S中m个元素的所有排列情况,并打印,非常适合用递归的思路实现.本文给出了两种实现方法,一种是给定的填充排列数组长度是固定的,一种是可变长度的.两种方 ...

  9. codeforces 719B:Anatoly and Cockroaches

    Description Anatoly lives in the university dorm as many other students do. As you know, cockroaches ...

随机推荐

  1. viewSub惰性装载器

    在需要的时候才解析,不耗费资源 <ViewStub android:id="@+id/stub" android:layout_width="wrap_conten ...

  2. Jenkins_获取源码编译并启动服务(一)

    一.安装Jenkins插件(可以手动安装,使用推荐安装容易卡死) 系统管理-->插件管理-->可选插件 Folders Plugin OWASP Markup Formatter Plug ...

  3. Linux_Shell_脚本参数接收键盘输入

    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 #!/bin/bash     #提示"请输入姓名"并等待30秒,把用户的输入保存入变量name ...

  4. &nbsp;兼容性问题

    直接在html文档中使用 来表示空格,在不同浏览器中的占位大小是不一样的. 因为不同浏览器默认的字体是不一样的,不同字体下的空格表示 占位大小不一致. 我们对 指定使用同样的字体就能让 显示同样的占位 ...

  5. R 绘图 填充颜色

    d <- density(mtcars$mpg) plot(d, main="Kernel Density of Miles Per Gallon") polygon(d, ...

  6. 简进祥--iOS开发基础知识

    1:App跳转至系统Settings 跳转在IOS8以上跟以下是有区别的,如果是IOS8以上可以如下设置: NSURL *url = [NSURL URLWithString:UIApplicatio ...

  7. springMVC-配置Bean

    配置Bean - 配置形式:基于xml文件方式,基于注解的方式- bean的配置方式:通过全类名(反射),通过工厂方法(静态工厂方法和实例工厂方法),FactoryBean依赖注入的方方式,属性注入和 ...

  8. 【poj3764】 The xor-longest Path

    http://poj.org/problem?id=3764 (题目链接) 今天的考试题,看到异或就有点虚,根本没往正解上想.. 题意 给出一棵带权树,请找出树上的一条路径,使其边上权值的异或和最大. ...

  9. hdu5124 线段树+离散化

    题意:令a[l..r]都+1,求a[1..n]的最大值 裸的成段更新+区间最值,但是本题坐标范围很大(10^9),所以需要离散化 顺便离散化模板get 离散化的基本思路: 设一共有m个数,范围1--n ...

  10. POJ3154 Graveyard

    Graveyard Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 1654   Accepted: 840   Specia ...