Hoán Đổi Để Thắng

Đề bài

Mô tả

Bác John có một chuỗi mục tiêu t gồm M ký tự và N chuỗi s1,s2,,sN, mỗi chuỗi gồm M ký tự (đều là chữ cái tiếng Anh thường).

Có hai phép biến đổi:

  1. Hoán vị trong chuỗi: Chọn chuỗi sx và hai vị trí p,q. Hoán đổi ký tự thứ p và thứ q của sx.
  2. Hoán vị giữa hai chuỗi: Chọn hai chuỗi sx,sy và vị trí k. Hoán đổi ký tự thứ k của sxsy.

Biến đổi s1 thành t sử dụng tối đa 2M phép biến đổi. Đảm bảo luôn tồn tại lời giải.

Dữ liệu vào

  • Dòng 1: Số nguyên T — số bộ test (1T10)
  • Với mỗi bộ test:
    • Dòng 1: Hai số nguyên NM
    • Dòng 2: Chuỗi mục tiêu t
    • N dòng tiếp theo: Các chuỗi s1,s2,,sN

Dữ liệu ra

Với mỗi bộ test:

  • Dòng 1: Số nguyên K (0K2M) — số phép biến đổi
  • K dòng tiếp theo: Mỗi dòng mô tả một phép biến đổi theo định dạng 1 x p q hoặc 2 x y k

Ràng buộc

  • 1N,M1000
  • Tất cả chuỗi gồm chữ cái tiếng Anh thường
  • Luôn tồn tại lời giải

Ví dụ

Input Output Giải thích
3
3 6
banana
nabana
banana
nnbaaa
5 3
abc
def
bca
ghi
jkl
mno
3 5
abcde
abcde
abcde
zzzzz
1
1 1 1 3
5
1 2 3 1
2 1 2 1
1 2 3 2
2 1 2 2
2 1 2 3
0
Test 1: Hoán đổi vị trí 1 và 3 trong s1. Test 3: s1 đã bằng t.

Ghi chú

  • Test 2-6: N,M100
  • Test 7-12: Không ràng buộc bổ sung

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.400 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.2 gforth 0.7.3 gfortran 12.2.0 go 1.27.0 groovyc 5.1.1 javac 25.0.4 node 26.8.1 julia 1.12.7 kotlinc 2.4.10 lean 4.33.1 sbcl 2.2.9 lua 5.4.9 nim 2.2.10 fpc 3.2.2 fpc-themis 3.2.2 perl 5.36.0 php 8.5.10 pike 8.0 swipl 9.0.4 pypy3 7.3.23 python3 3.14.7 racket 8.7 ruby 4.0.6 rustc 1.98.0 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 swiftc 6.3.3 tclsh 8.6 bun 1.4.0 deno 2.9.6 v 0.5.2 zig 0.16.0