【每日一题】Problem 626B. Cards

发布时间 2023-07-27 23:31:28作者: HelloEricy

原题

解决思路

找规律

  1. 对于 n:0:0 形式的,只有一种结果,是第一个元素
  2. 对于 m:n:t 形式的,三个元素都是可能的
  3. 对于 1:n:0 形式的,可以发现,第二种元素是永远不可能的
    • 1:n:0 可以变成 1:n-1:0 和 0:n-1:1,而这本质上还是 1:n:0
      • 最终,该形式只有两种倒数第二形态,1:2:0, 1:1: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;
}