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 中国大陆许可协议进行许可。
分类:
标签:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步