我是靠谱客的博主 缥缈冰棍,这篇文章主要介绍C. Nice Garland,现在分享给大家,希望可以做个参考。

题意:

  就是有一串灯分别颜色是R,G,B。要求将每种颜色的灯相隔2个不同的灯。比如,RGR变成RGB才叫好看。

分析:

  RGB有6种排列,分别是:"RGB", "RBG", "GBR", "GRB", "BGR", "BRG"。但是注意的是,两种之间的排列,肯定是不满足这样的情况的。

所以,怎样才能满足题目的要求呢?这样只有同样的情况才可以。也就是说RGRBGRRRG每个只能按照一个排列来进行更改。因为,把这样的字符串这样分三个改好后

其实就已经是好看的。也就是6种情况都进行暴力,然后比较大小。

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24


#include<iostream>
#include<string> using namespace std; const int maxn = 2 * 1e5 + 10; string ss[6] = { "RGB", "RBG", "GBR", "GRB", "BGR", "BRG" }; int vis[6]; int main(){ char st[maxn]; int n; cin >> n; cin >> st; for (int j = 0; j < 6;++j) for (int i = 0; i < n; ++i){ if (st[i] != ss[j][i % 3]){ ++vis[j]; } } int minn = 0; for (int i = 0; i < 6; ++i){ if (vis[minn]>vis[i])minn = i; } cout << vis[minn] << endl; for (int i = 0; i < n; ++i){ cout << ss[minn][i % 3]; } cout << endl; }

 

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

最后

以上就是缥缈冰棍最近收集整理的关于C. Nice Garland的全部内容,更多相关C.内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(69)

评论列表共有 0 条评论

立即
投稿
返回
顶部