trang chủ / đề bài / testtube

Ống Nghiệm

Đề bài

Mô tả

Bessie có hai ống nghiệm, mỗi ống chứa N đơn vị chất lỏng gồm hai màu là màu 1 và màu 2. Chất lỏng trong một bình xếp thành các lớp, mỗi lớp là một nhóm nhiều nhất có thể các đơn vị cùng màu nằm liền nhau. Bessie còn một chiếc cốc rỗng để hỗ trợ. Cả ba bình đều có sức chứa không giới hạn.

Một lần rót từ bình a sang bình b lấy toàn bộ lớp trên cùng của a và đổ sang b. Lần rót chỉ hợp lệ khi a không rỗng, và b rỗng hoặc màu ở đỉnh b trùng với màu của lớp được rót.

Bessie muốn cuối cùng mỗi ống nghiệm chỉ còn một màu (hai ống mang hai màu khác nhau) và chiếc cốc rỗng. Gọi M là số lần rót ít nhất để làm được điều đó.

Dữ liệu vào

  • Dòng 1: số nguyên T, số lượng test case.
  • Với mỗi test case:
    • Dòng 1: hai số nguyên N và P.
    • Dòng 2: xâu N ký tự gồm '1' và '2' mô tả ống nghiệm 1 từ đáy lên đỉnh.
    • Dòng 3: xâu tương tự mô tả ống nghiệm 2.

Dữ liệu ra

Với mỗi test case, P quyết định dạng kết quả:

  • P=1: in một dòng chứa M.
  • P=2: in số nguyên A với M≤A≤M+5, rồi A dòng mô tả các lần rót.
  • P=3: in M, rồi đúng M dòng mô tả các lần rót.

Mỗi lần rót ghi trên một dòng hai số nguyên là bình nguồn và bình đích, trong đó 1 là ống nghiệm 1, 2 là ống nghiệm 2 và 3 là chiếc cốc. Mọi lần rót phải hợp lệ, và sau lần rót cuối cùng mỗi ống nghiệm chỉ còn một màu còn chiếc cốc rỗng.

Nếu có nhiều dãy lần rót thoả mãn, in ra một dãy bất kỳ.

Ràng buộc

  • 1≤T≤10
  • 1≤N≤105
  • 1≤P≤3
  • Mỗi màu xuất hiện ít nhất một lần trong dữ liệu vào của mỗi test case.

Ví dụ

Input Output Giải thích
1
4 1
1221
2211
4 Ống 1 có ba lớp 1, 22, 1 tính từ đáy; ống 2 có hai lớp 22, 11. Không thể tách hai màu bằng ít hơn 4 lần rót.
1
4 3
1221
2211
4
1 2
1 3
2 1
3 2
Rót lớp 1 ở đỉnh ống 1 sang ống 2 (đỉnh ống 2 cũng là màu 1). Rót lớp 22 ở đỉnh ống 1 sang cốc đang rỗng. Rót cả cột màu 1 ở ống 2 sang ống 1, ống 1 thành toàn màu 1. Cuối cùng rót cốc sang ống 2, ống 2 thành toàn màu 2 và cốc rỗng.

Bình luận

Không có bình luận tại thời điểm này.

gnatmake 12.2.0 a68g 3.1.2 nasm 2.16.1 as_x64 2.47 awk 1.3.4 gcc 16.2.0 dotnet 10.0.402 g++ 16.2.0 g++-themis 16.2.0 g++17 16.2.0 g++20 16.2.0 g++23 16.2.0 clang++ 22.1.8 dmd 2.113.0 dart 3.13.6 gforth 0.7.3 gfortran 15.3.0 go 1.27.3 groovyc 5.1.3 javac 26.0.2.1 node 26.12.1 julia 1.13.2 kotlinc 2.4.21 lean 4.35.0 sbcl 2.2.9 lua 5.5.1 nim 2.2.12 fpc 3.2.2 fpc-themis 3.2.2 perl 5.42.3 php 8.5.12 pike 8.0 swipl 9.0.4 pypy3 7.3.23 python3 3.15.1 racket 8.7 ruby 4.0.8 rustc 1.99.1 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 swiftc 6.4.1 tclsh 8.6 bun 1.4.4 deno 2.9.8 v 0.5.2 zig 0.17.0