P14034 [PAIO 2025] Cards

题目背景

**DO NOT** include `cards.h`. Submit using C++ >=17.

题目描述

你有 $X$ 张黑卡,$Y$ 张白卡,以及 $Z$ 张青卡(共 $X + Y + Z$ 张卡片)。你要将所有卡片按照任意顺序逐一放到一个单独的卡堆上。 每当你放下一个卡片后,检查卡堆: - 如果卡堆里**现在**已经至少有一种黑、白、青三色各一张,你可以得 $1$ 分,随后将**除了刚放下的那张卡片之外**的所有卡片都销毁(从卡堆移除)。刚放下的那张卡片依然留在卡堆上,成为唯一的卡片。 - 否则,什么都不发生。 你的任务是计算你能获得的最大得分。 ### 实现细节 你需要实现一个名为 `maximum_score` 的过程,无需引入头文件 `card.h`,并且使用 C++17 或以上的语言规范提交本题: ```cpp int64 maximum_score(int32 X, int32 Y, int32 Z); ``` - $X$:黑色卡牌的数量; - $Y$:白色卡牌的数量; - $Z$:青色卡牌的数量; 该过程在程序开始时每个测试用例最多会被调用 $100$ 次。 该过程应返回你能获得的最大分数。

输入格式

无。

输出格式

无。

说明/提示

### 示例 #### 示例 1 考虑如下调用: ```cpp maximum_score(2, 2, 1); ``` 该过程应返回 $2$。 #### 示例 2 考虑如下调用: ```cpp maximum_score(4, 3, 4); ``` 该过程应返回 $5$。 ### 样例判题器 样例判题器以如下格式读入输入: - 第 $1$ 行:整数 $T$,表示对 `maximum_score` 的调用次数 - 接下来的 $T$ 行:每行有三个整数 $X, Y, Z$ 判题器调用 `maximum_score(X, Y, Z)` 并输出返回值。 # 提示 * $1 \le X \le 10^9$ * $1 \le Y \le 10^9$ * $1 \le Z \le 10^9$ ### 评分标准 1. 子任务 1(4 分):$X = Y = Z = 1$ 2. 子任务 2(7 分):$X + Y + Z \le 8$ 3. 子任务 3(15 分):$X + Y + Z \le 16$ 4. 子任务 4(25 分):$X, Y, Z \le 50$ 5. 子任务 5(12 分):$X = Y = Z$ 6. 子任务 6(24 分):$X < Y = Z$ 7. 子任务 7(13 分):无其他特殊约束 由 ChatGPT 5 翻译