解决思路
找规律
- 对于 n:0:0 形式的,只有一种结果,是第一个元素
- 对于 m:n:t 形式的,三个元素都是可能的
- 对于 1:n:0 形式的,可以发现,第二种元素是永远不可能的
- 1:n:0 可以变成 1:n-1:0 和 0:n-1:1,而这本质上还是 1:n:0
- 最终,该形式只有两种倒数第二形态,1:2:0, 1:1:0 (不考虑一、三元素位置问题),而无论是哪种形式,第二种元素都不可能是最终结果
- 1:n:0 可以变成 1:n-1:0 和 0:n-1:1,而这本质上还是 1:n:0
#include <bits/stdc++.h>
int main() {
int n; std::cin >> n;
std::map<char, int> m;
for (int i = 0; i < n; ++i) {
char c; std::cin >> c;
++m[c];
}
std::string res = "BGR";
if (m.size() == 3) std::cout << res << "\n";
else if (m.size() == 1) {
auto p = m.lower_bound('B');
std::cout << p->first << "\n";
} else {
auto n1 = m.lower_bound('B');
auto n2 = m.upper_bound(n1->first);
for (int i = 0; i < 3; ++i) {
if (n1->second == 1 && res[i] == n2->first) continue;
if (n2->second == 1 && res[i] == n1->first) continue;
std::cout << res[i];
}
std::cout << "\n";
}
return 0;
}
标签:std,int,res,元素,++,626B,Cards,Problem,first
From: https://www.cnblogs.com/HelloEricy/p/17586415.html