#P10191. [USACO24FEB] Test Tubes S

[USACO24FEB] Test Tubes S

题目描述

Bessie 最近开始对化学感兴趣。目前,她有两种不同颜色 1122 的液体,彼此之间无法混合。她有两个无限容量的试管,各装有 NN1N1051\le N\le 10^5)单位的这两种颜色的液体混合物。由于液体无法混合,一旦沉淀,它们就会分成不同颜色的层。因此,两个试管可以被视为两个字符串 f1f2fNf_1f_2\ldots f_Ns1s2sNs_1s_2\ldots s_N,其中 fif_i 表示距离第一个试管底部 ii 单位处的液体的颜色,sis_i 表示距离第二个试管底部 ii 单位处的液体的颜色。输入保证两种颜色的液体至少各有一个单位。

Bessie 想要分离这些液体,以使得每个试管包含一种颜色的液体的所有单位。她有第三个无限容量的空烧杯来帮助她完成这一任务。当 Bessie 进行一次「倾倒」时,她将一个试管或烧杯顶部的所有颜色为 ii 的液体移至另一个的顶部。

求出将所有液体分离到两个试管中所需的最小的倾倒次数,以及所需的移动操作。两个试管最终包含的液体颜色不影响正确性,但烧杯必须是空的。

TT1T101\le T\le 10)个测试用例,每个测试用例有一个参数 PP

设将液体分离至试管中的最小倾倒次数为 MM

  • P=1P=1,当你仅输出 MM 时可以得到分数。
  • P=2P=2,当你输出 AA,其中 MAM+5M\le A\le M+5,并在以下 AA 行输出以该操作次数构造的一个方案时,可以得到分数。每一行包含来源试管和目标试管(1122,或用 33 表示烧杯)。操作之前,来源试管必须是非空的,并且不得将一个试管向其自身倾倒。
  • P=3P=3,当你输出 MM,并输出以该操作次数构造的一个方案时,可以得到分数。

输入格式

输入的第一行包含 TT,为测试用例的数量。对于每一个测试用例,第一行包含 NNPP,为每个试管最初装有液体的数量以及询问类型。下一行包含 f1f2f3fNf_1f_2f_3\ldots f_N,表示第一个试管。fi{1,2}f_i\in \{1,2\}f1f_1 表示试管的底部。下一行包含 s1s2s3sNs_1s_2s_3\ldots s_N,表示第二个试管。si{1,2}s_i\in \{1,2\}s1s_1 表示试管的底部。

输入保证两个字符串均包含至少一个 11 和一个 22

输出格式

对于每一个测试用例,输出一个整数,表示分离试管中液体的最少倾倒次数。根据询问类型,你可能还需要提供合法的构造方案。

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

提示

样例解释

在前三个测试用例中,分离试管的最小倾倒次数为 44。我们可以看到以下操作是如何分离试管的:

初始状态:

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:

在最后一个测试用例中,最小倾倒次数为 55。然而,由于 P=2P=2,给出的 66 次操作的构造也是合法的,因为它与最优解的差在 55 次倾倒之内。

测试点性质

  • 测试点 262-6P=1P=1
  • 测试点 7117-11P=2P=2
  • 测试点 122112-21:没有额外限制。

除此之外,输入保证除样例外的所有测试点均有 T=10T=10