B4400 [蓝桥杯青少年组国赛 2025] 第五题
题目背景
洛谷的试题为民间回忆版,仅保证题意相同。试题呈现形式、样例、数据范围可能存在差异。
题目描述
给定三个牛奶桶 A、B、C,其容积分别为 $v, x, y$。初始状态下,三个桶中的牛奶量分别为 $(v, 0, 0)$。
你可以在任意两个桶之间进行“倾倒操作”。例如,从桶 S(源桶)向桶 D(目标桶)倒牛奶,规则如下:
1. 如果 S 中的牛奶量**大于或等于** D 桶剩余的容量,则将 D 倒满,S 中将剩下多余的牛奶。
2. 如果 S 中的牛奶量**小于** D 桶剩余的容量,则将 S 中的牛奶**全部**倒入 D。
注意:题目不允许从外部补充牛奶,也不允许把不想要的牛奶倒掉不要。
你的任务是计算出,要使 A、B、C 其中任意一个桶的牛奶量恰好为 $\dfrac{v}{2}$,所需要的最少倾倒操作次数。
输入格式
输入一行,包含三个正整数 $v, x, y$,分别代表三个桶的容积。
输出格式
输出一个整数。如果能够通过若干次操作达成目标,输出最少的操作次数;否则,输出 $-1$。
说明/提示
### 样例解释
初始状态为 $(8, 0, 0)$,目标是让任意一个桶的牛奶量达到 $8/2 = 4$ 升。
一种可行的最少步骤方案如下(括号内数字分别代表 $A, B, C$ 桶的牛奶量):
1. $(8, 0, 0) \to$ 从 A 倒向 B $\to (3, 5, 0)$
2. $(3, 5, 0) \to$ 从 B 倒向 C $\to (3, 2, 3)$
3. $(3, 2, 3) \to$ 从 C 倒向 A $\to (6, 2, 0)$
4. $(6, 2, 0) \to$ 从 B 倒向 C $\to (6, 0, 2)$
5. $(6, 0, 2) \to$ 从 A 倒向 B $\to (1, 5, 2)$
6. $(1, 5, 2) \to$ 从 B 倒向 C $\to (1, 4, 3)$
经过 $6$ 次操作,B 桶中有了 $4$ 升牛奶,达成目标。这是最少的操作次数。
### 数据范围与约定
对于 100% 的数据,满足:$1 \le v, x, y \le 200$;