#P1021. Problem 2. Test Tubes
Problem 2. Test Tubes
当前没有测试数据。
一、Problem Name
Test Tubes
二、Problem Description
Bessie has recently gotten into chemistry. At the moment, she has two different colors 1 and 2 of various liquids that don't mix well with one another. She has two test tubes of infinite capacity filled with () units each of some mixture of liquids of these two colors. Because the liquids don’t mix, once they settled, they divided into layers of separate colors. Because of this, the two tubes can be viewed as strings and where represents the color of the liquid that is units from the bottom of the first tube, and represents the color of the liquid that is units from the bottom of the second tube. It is guaranteed that there is at least one unit of each color of liquid.
Bessie wants to separate these liquids so that each test tube contains all units of one color of liquid. She has a third empty beaker of infinite capacity to help her in this task. When Bessie makes a "pour", she moves all liquid of color at the top of one test tube or beaker into another.
Determine the minimum number of pours to separate all the liquid into the two test tubes, and the series of moves needed to do so. It does not matter which test tube ends up with which color, but the beaker must be empty.
There will be () test cases, with a parameter for each test case.
Suppose the minimum number of pours to separate the liquids into the original tubes is .
- If , you will receive credit if you print only .
- If , you will receive credit if you print an integer such that , followed by lines that construct a solution with that number of moves. Each line should contain the source and the destination tube (1 for the first tube, 2 for the second tube, or 3 for the beaker). The source tube must be nonempty before the move and a tube may not be poured into itself.
- If , you will receive credit if you print , followed by a valid construction using that number of moves.
三、Input Format (input arrives from the terminal / stdin)
- The first line contains , the number of test cases. For each test case, the next line contains and representing the amount each test tube is initially filled to, and the query type. The following line contains representing the first test tube. and represents the bottom of the test tube. The subsequent line contains representing the second test tube. and represents the bottom of the test tube.
- It is guaranteed that there will be at least one 1 and one 2 across both input strings.
四、Output Format (print output to the terminal / stdout)
For each test case, you will print a single number representing the minimum pours to separate the liquid in the test tubes. Depending on the query type, you may also need to provide a valid construction.
五、Sample Input and Output
Sample Input
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
Sample Output
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
Explanation: In the first three test cases, the minimum number of pours to separate the tubes is 4. We can see how the following moves separate the test tubes: Initial state: Tube 1: 1221 Tube 2: 2211 Beaker: After the move "1 2": Tube 1: 122 Tube 2: 22111 Beaker: After the move "1 3": Tube 1: 1 Tube 2: 22111 Beaker: 22 After the move "2 1": Tube 1: 1111 Tube 2: 22 Beaker: 22 After the move "3 2": Tube 1: 1111 Tube 2: 2222 Beaker: In the last test case, the minimum amount of pours is 5. However, since , the given construction with 6 moves is valid since it is within 5 pours from the optimal answer.
六、Scoring Rules
- Inputs 2 - 6: .
- Inputs 7 - 11: .
- Inputs 12 - 21: No additional constraints.
- Additionally, it is guaranteed that for all inputs besides the sample.
Problem credits: Suhas Nagar.