1 条题解

  • 0
    @ 2026-6-19 10:30:56

    📝 题目大意

    给定红、绿、蓝三种笔的价格 R,G,BR,G,B 以及桥君不喜欢的颜色 CC,求在剩余两种颜色中买一支笔的最小花费。

    💡 解题思路

    1. 题目分析:数据范围 1R,G,B1001 \le R,G,B \le 100 极小,直接模拟即可。颜色 CC 只有三种可能:RedGreenBlue
    2. 算法推导
      • 读取三个整数 R,G,BR,G,B 和一个字符串 CC
      • CCRed,则只能在绿色和蓝色中选择,答案为 min(G,B)\min(G, B)
      • CCGreen,则只能在红色和蓝色中选择,答案为 min(R,B)\min(R, B)
      • CCBlue,则只能在红色和绿色中选择,答案为 min(R,G)\min(R, G)
      • 输出答案即可。
    3. 边界与细节:三种颜色的价格可能相等,此时取 min\min 得到的结果即为任意一个价格,不影响正确性。不需要考虑 CC 为其他字符串的情况(题目保证输入合法)。

    ⏱️ 复杂度分析

    • 时间复杂度O(1)O(1),仅涉及常数次比较和取最小值操作。
    • 空间复杂度O(1)O(1),仅使用几个变量。

    💻 标准代码 (C++)

    #include <iostream>
    #include <string>
    using namespace std;
    
    int main() {
        int R, G, B;
        string C;
        cin >> R >> G >> B >> C;   // 读入三种价格和不喜欢颜色
    
        int ans;
        if (C == "Red") {
            ans = min(G, B);       // 不买红色,在绿和蓝中取最小
        } else if (C == "Green") {
            ans = min(R, B);       // 不买绿色,在红和蓝中取最小
        } else { // Blue
            ans = min(R, G);       // 不买蓝色,在红和绿中取最小
        }
    
        cout << ans << endl;       // 输出最小花费
    
        return 0;
    }
    
    • 1

    信息

    ID
    812
    时间
    1000ms
    内存
    256MiB
    难度
    10
    标签
    (无)
    递交数
    1
    已通过
    1
    上传者