当前位置: 首页 > news >正文

D. Diverse Garland

题意:灯有三种颜色R,G,B。只要同一种颜色相邻就不可以。问最少需要换几次,可以使在一串灯中没有相邻灯的颜色相同。

思路:贪心思路:我们知道一个程序都是要子阶段,然后子阶段各个组合起来形成这个程序。那么对于每一个子阶段的贪心,就能形成整个程序的贪心。

贪心思路就是:只要出现相邻的相同a[i]==a[i+1], 然后,就选择一个a[i+1]!=a[i]&&a[i+1]!=a[i+2]的情况。注意:最后2个字母相同时,需要自己处理一下。

#include<iostream>
using namespace std;
const int maxn = 2e5 + 10;
int main(){
    int n;        char st[maxn];
    cin >> n;    cin >> st;
    if (n < 2){
        cout << 0 << endl;
        cout << st << endl;
    }
    else{
        int ans = 0;
        for (int i = 0; i < n - 1; ++i){
            if (st[i] == st[i + 1]&&i<n-2){
                if (st[i] == 'G'&&st[i + 2] == 'G'){ st[i + 1] = 'R'; }
                else if (st[i] == 'G'&&st[i + 2] == 'R'){ st[i + 1] = 'B'; }
                else if (st[i] == 'G'&&st[i + 2] == 'B'){ st[i + 1] = 'R'; }
                else if (st[i] == 'B'&&st[i + 2] == 'B'){ st[i + 1] = 'R'; }
                else if (st[i] == 'B'&&st[i + 2] == 'R'){ st[i + 1] = 'G'; }
                else if (st[i] == 'B'&&st[i + 2] == 'G'){ st[i + 1] = 'R'; }
                else if (st[i] == 'R'&&st[i + 2] == 'R'){ st[i + 1] = 'B'; }
                else if (st[i] == 'R'&&st[i + 2] == 'G'){ st[i + 1] = 'B'; }
                else if (st[i] == 'R'&&st[i + 2] == 'B'){ st[i + 1] = 'G'; }
                ans++;
            }
            else if (i == n - 2 && st[i] == st[i + 1]){
            //    cout << st[i] << st[i + 1] << endl;
                if (st[i] == 'B'){ st[i + 1] = 'G'; }
                else if (st[i] == 'G'){ st[i + 1] = 'R'; }
                else if (st[i] == 'R'){ st[i + 1] = 'G'; }
                ans++;
            }
        }
        cout << ans << endl;
        cout << st << endl;
    }
}

 

转载于:https://www.cnblogs.com/ALINGMAOMAO/p/10320090.html

相关文章:

  • 火箭主帅德安东尼赞哈登低位防守:他是控球中锋
  • Problem C: [noip2016十连测第五场]travel (构造+贪心)
  • 年终总结,程序员票选最喜欢的编程语言花落谁家?
  • js 基本数据类型
  • 自己写一个mvc框架吧(三)
  • IDEA 超级好用的插件
  • 微软是如何使用C#重写C#编译器并将其开源的
  • 前端小报 - 201901 月刊
  • DNS 故障导致微软 Azure 云服务的数据库被删除
  • 05-内联函数
  • CF每日一练(2.8)
  • 研究人员发现 macOS 可获取用户密码的 0day 漏洞
  • vue3.0 记录01
  • Fedora logo 改版最新进展:已有三个候选方案
  • 前端设计模式
  • [js高手之路]搞清楚面向对象,必须要理解对象在创建过程中的内存表示
  • [NodeJS] 关于Buffer
  • 「前端早读君006」移动开发必备:那些玩转H5的小技巧
  • Android优雅地处理按钮重复点击
  • angular2开源库收集
  • CEF与代理
  • CSS3 聊天气泡框以及 inherit、currentColor 关键字
  • javascript数组去重/查找/插入/删除
  • MD5加密原理解析及OC版原理实现
  • select2 取值 遍历 设置默认值
  • Spring-boot 启动时碰到的错误
  • vue从创建到完整的饿了么(18)购物车详细信息的展示与删除
  • 大数据与云计算学习:数据分析(二)
  • 翻译 | 老司机带你秒懂内存管理 - 第一部(共三部)
  • 关于extract.autodesk.io的一些说明
  • 关于for循环的简单归纳
  • 后端_MYSQL
  • 扑朔迷离的属性和特性【彻底弄清】
  • 思维导图—你不知道的JavaScript中卷
  • nb
  • Oracle Portal 11g Diagnostics using Remote Diagnostic Agent (RDA) [ID 1059805.
  • const的用法,特别是用在函数前面与后面的区别
  • 蚂蚁金服CTO程立:真正的技术革命才刚刚开始
  • (1)(1.11) SiK Radio v2(一)
  • (2)MFC+openGL单文档框架glFrame
  • (二十三)Flask之高频面试点
  • (附源码)php新闻发布平台 毕业设计 141646
  • (附源码)springboot“微印象”在线打印预约系统 毕业设计 061642
  • (机器学习-深度学习快速入门)第三章机器学习-第二节:机器学习模型之线性回归
  • (离散数学)逻辑连接词
  • (全部习题答案)研究生英语读写教程基础级教师用书PDF|| 研究生英语读写教程提高级教师用书PDF
  • (一)80c52学习之旅-起始篇
  • (转)可以带来幸福的一本书
  • (转)清华学霸演讲稿:永远不要说你已经尽力了
  • (轉貼) 資訊相關科系畢業的學生,未來會是什麼樣子?(Misc)
  • (总结)Linux下的暴力密码在线破解工具Hydra详解
  • ******之网络***——物理***
  • . ./ bash dash source 这五种执行shell脚本方式 区别
  • .net2005怎么读string形的xml,不是xml文件。
  • .NET6 开发一个检查某些状态持续多长时间的类