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 翻译