2022-03-26 10:23阅读: 27评论: 0推荐: 0

F - Nice Garland

题意:

把带有RGB的字符串修改为相同字符串隔三个出现的情况所需要的最小修改次数以及结果

思路:

我们可以把范围缩小到前三个位置,那么情况只有6种 RGB RBG BGR BRG GRB GBR
然后注意枚举修改次数

小技巧:

使用string 数组存情况,用 a[i]==s[i%3]进行对比

#include<bits/stdc++.h>
using namespace std;
const int N = 2e5+7;
string s[7]={"0","RGB","RBG","BRG","BGR","GBR","GRB"};
int d[7];
int n;
char a[N];
int k=1;
void change(string sh)
{
for(int i=0;i<n;i++)
{
if(a[i]!=sh[i%3])
{
d[k]++;
}
}
k++;
}
signed main()
{
cin>>n;
for(int i=0;i<n;i++)
{
cin>>a[i];
}
change(s[1]);
change(s[2]);
change(s[3]);
change(s[4]);
change(s[5]);
change(s[6]);
int mark=1;
for(int i=2;i<=6;i++)
{
if(d[mark]>d[i])
{
mark=i;
}
}
cout<<d[mark]<<endl;
for(int i=0;i<n;i++)
{
cout<<s[mark][i%3];
}
}

本文作者:TimMCBen

本文链接:https://www.cnblogs.com/TimMCBen/p/16057871.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   TimMCBen  阅读(27)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
💬
评论
📌
收藏
💗
关注
👍
推荐
🚀
回顶
收起
  1. 1 404 not found REOL
404 not found - REOL
00:00 / 00:00
An audio error has occurred.