coderforces719b
题目大意:给定一个字符串,这个字符串中只有“r”和"b"组成,每次操作只能交换两个字符的位置或者将一个字符由"r"变"b"(或由"b"变"r").
问:至少需要操作多少次才能使得字符串中rb依次存在(rbrbrbrb...或者brbrbrbr....)
题解:交换所需要得次数肯定是小于字符变值,所以操作中优先考虑交换,然后才考虑改变字符值.所以用两个变量(rn,bn)依次记录下与标准字符串的差值
对于每个字符串分别用brbr和rbrbrb的形式判断他们.然后每交换一次,rn与bn都要减少一次。等交换完毕,剩下的操作就是变值,所以总的操作数就是
两个变量中差值大的那个。然后从两种变换中找出值最小的那个。
#include<iostream>
#include<algorithm>
#include<cmath>
#include<cstring>
#include<cstdlib>
#define MAX_SIZE 100005
using namespace std;
char str[MAX_SIZE];
int main()
{
int n = ;
int rn = , bn = ;
int cnt = ;
cin>>n;
cin>>str;
//rbrb switch to brbr,相当于把字符串变成brbr的形式
for(int i = ; i < n; i++)
{
if(i% == )
{
if(str[i] == 'r')
rn++;
}
if(i% == )
{
if(str[i] == 'b')
bn++;
} }
cnt = max(rn,bn);
//brbr switch to rbrb,相当于把字符串变成rbrb的形式
rn = bn = ;
for(int i = ; i < n; i++)
{
if(i% == )
{
if(str[i] == 'r')
rn++;
}
if(i% == )
{
if(str[i] == 'b')
bn++;
} }
cout<<min(cnt,max(rn,bn))<<endl; }
coderforces719b的更多相关文章
随机推荐
- Javascript之运动框架2
运动框架2与运动框架1的不同之处在于,运动框架2是框架1的升级版,首先完善了传入值,改为move(obj,json,options),在options里面,可以选择传入或者不传入时间,运动形式,以及函 ...
- PDF 补丁丁 0.4.2.1063 测试版发布:新增检查新版本功能
新版本增加了检查新版本的功能(程序不自动联网,请手动检查). 补丁丁拥趸们,你们可以更方便地用上程序的最新测试版本啦! 新测试版还修复了旧测试版的一些问题,欢迎下载试用哦!
- 倒计时js代码
<div class="time"> <span id="t_d">00天</span> <span id=" ...
- Halcon 10.0 Sample:完整性检查(圆形)
* ball.hdev: Inspection of Ball Bonding * 球接合检查 Comment Time:// *核心思想:.白色区域用作自动ROI,黑色区域是目标 * .Openin ...
- My Game --简介
曾经 我们雄心壮志,曾经 我们慷慨激昂,曾经 我们豪情满天涯. 曾经我们一起策划玩法,寻找背景题材,编写代码,幻想没有的更新.此刻由最后的孤狼把仅有成果分享给大伙. 所谓的玩法,背景,每个游戏都与众不 ...
- Object中的一些方法
Object.create()参数为一个对象,创建一个对象,其原型为参数,如果为null,则无原型. Object.keys()参数为对象,返回一个数组,为对象中所有可枚举的自有属性 Object.g ...
- Linux下Tomcat的安装配置
一.下载安装对应的jdk,并配置Java环境. 官网下载地址: http://www.oracle.com/technetwork/java/javase/downloads/jdk-6u26-dow ...
- servlet jsp 客户端服务端跳转
jsp 客户端:href jsp 服务端:forward servlet 客户端:response.sendredirect(); servlet 服务器:request.getRequestDisp ...
- android:LayoutInflater
LayoutInflater:一般用于查找res/layout下的布局文件,findViewById()一般是用于查找布局下的各种控件 一般:我们使用LayoutInflater.from(conte ...
- javascript笔记8-表单脚本、JSON、AJAX
通过表单提交,很方便的可以从界面把参数传递给后台. 如果前后台我们有大量数据需要交互,JSON方便我们传递和读取. 如果需要更新一个界面的某一部分数据,并不想刷新界面,就要用到Ajax. 1. 表单脚 ...