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];
}
}
标签:string,Garland,int,RGB,GBR,RBG,change,Nice 来源: https://www.cnblogs.com/TimMCBen/p/16057871.html