#P10191. [USACO24FEB] Test Tubes S
[USACO24FEB] Test Tubes S
题目描述
Bessie 最近开始对化学感兴趣。目前,她有两种不同颜色 和 的液体,彼此之间无法混合。她有两个无限容量的试管,各装有 ()单位的这两种颜色的液体混合物。由于液体无法混合,一旦沉淀,它们就会分成不同颜色的层。因此,两个试管可以被视为两个字符串 和 ,其中 表示距离第一个试管底部 单位处的液体的颜色, 表示距离第二个试管底部 单位处的液体的颜色。输入保证两种颜色的液体至少各有一个单位。
Bessie 想要分离这些液体,以使得每个试管包含一种颜色的液体的所有单位。她有第三个无限容量的空烧杯来帮助她完成这一任务。当 Bessie 进行一次「倾倒」时,她将一个试管或烧杯顶部的所有颜色为 的液体移至另一个的顶部。
求出将所有液体分离到两个试管中所需的最小的倾倒次数,以及所需的移动操作。两个试管最终包含的液体颜色不影响正确性,但烧杯必须是空的。
有 ()个测试用例,每个测试用例有一个参数 。
设将液体分离至试管中的最小倾倒次数为 。
- 若 ,当你仅输出 时可以得到分数。
- 若 ,当你输出 ,其中 ,并在以下 行输出以该操作次数构造的一个方案时,可以得到分数。每一行包含来源试管和目标试管(,,或用 表示烧杯)。操作之前,来源试管必须是非空的,并且不得将一个试管向其自身倾倒。
- 若 ,当你输出 ,并输出以该操作次数构造的一个方案时,可以得到分数。
输入格式
输入的第一行包含 ,为测试用例的数量。对于每一个测试用例,第一行包含 和 ,为每个试管最初装有液体的数量以及询问类型。下一行包含 ,表示第一个试管。, 表示试管的底部。下一行包含 ,表示第二个试管。, 表示试管的底部。
输入保证两个字符串均包含至少一个 和一个 。
输出格式
对于每一个测试用例,输出一个整数,表示分离试管中液体的最少倾倒次数。根据询问类型,你可能还需要提供合法的构造方案。
6
4 1
1221
2211
4 2
1221
2211
4 3
1221
2211
6 3
222222
111112
4 3
1121
1222
4 2
1121
1222
4
4
1 2
1 3
2 1
3 2
4
1 2
1 3
2 1
3 2
1
2 1
5
2 3
1 2
1 3
1 2
3 1
6
2 3
1 2
1 3
1 2
2 1
3 2
提示
样例解释
在前三个测试用例中,分离试管的最小倾倒次数为 。我们可以看到以下操作是如何分离试管的:
初始状态:
1: 1221
2: 2211
3:
在操作 1 2
后:
1: 122
2: 22111
3:
在操作 1 3
后:
1: 1
2: 22111
3: 22
在操作 2 1
后:
1: 1111
2: 22
3: 22
在操作 3 2
后:
1: 1111
2: 2222
3:
在最后一个测试用例中,最小倾倒次数为 。然而,由于 ,给出的 次操作的构造也是合法的,因为它与最优解的差在 次倾倒之内。
测试点性质
- 测试点 :。
- 测试点 :。
- 测试点 :没有额外限制。
除此之外,输入保证除样例外的所有测试点均有 。