trang chủ / bài tập / twoswaps

Hoán đổi hai xâu

Đề bài

Mô tả

Cho hai xâu ab gồm các chữ cái Latinh thường, cùng độ dài n. Các vị trí của cả hai xâu được đánh số từ 1 đến n.

Bạn được phép thực hiện các thao tác sau đây (bao nhiêu lần tùy ý, theo thứ tự bất kỳ):

  • Chọn một chỉ số i (1in) và hoán đổi ai với bi;
  • Chọn một chỉ số i (1in) và hoán đổi ai với ani+1;
  • Chọn một chỉ số i (1in) và hoán đổi bi với bni+1.

Mục tiêu là làm cho hai xâu ab trở nên giống hệt nhau bằng các thao tác trên. Tuy nhiên điều này không phải lúc nào cũng khả thi.

Trước khi bắt đầu các thao tác trên, bạn được phép thực hiện một số bước tiền xử lý. Trong mỗi bước tiền xử lý, bạn chọn một chỉ số i (1in) và một chữ cái c tùy ý, rồi gán ai:=c. Lưu ý: tiền xử lý chỉ được áp dụng cho xâu a, và phải thực hiện xong trước khi bắt đầu bất kỳ thao tác hoán đổi nào.

Hãy tìm số bước tiền xử lý ít nhất cần thực hiện, sao cho sau đó có thể làm cho ab giống hệt nhau bằng một dãy các thao tác hoán đổi. Số lượng thao tác hoán đổi thực hiện sau đó không quan trọng.

Dữ liệu vào

  • Dòng thứ nhất chứa một số nguyên n là độ dài của hai xâu.
  • Dòng thứ hai chứa xâu a gồm đúng n chữ cái Latinh thường.
  • Dòng thứ ba chứa xâu b gồm đúng n chữ cái Latinh thường.

Dữ liệu ra

  • In ra một số nguyên duy nhất là số bước tiền xử lý ít nhất cần thực hiện.

Ràng buộc

  • 1n105

Ví dụ

Input Output Giải thích
7
abacaba
bacabaa
4 Thực hiện a1:=b, a3:=c, a4:=a, a5:=b, khi đó a= bbcabba. Sau đó dùng các hoán đổi swap(a2,b2) và swap(a2,a6) để hai xâu bằng nhau. Không thể dùng ít hơn 4 bước tiền xử lý.
5
zcabd
dbacz
0 Không cần bước tiền xử lý nào: dùng swap(b1,b5) và swap(a2,a4) là hai xâu bằng nhau.

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.46 awk 1.3.4 gcc 16.1.0 csc 6.12.0.200 g++ 16.1.0 g++-themis 16.1.0 g++17 16.1.0 g++20 16.1.0 g++23 16.1.0 clang++ 22.1.6 dmd 2.112.0 dart 3.12.1 gforth 0.7.3 gfortran 12.2.0 go 1.26.3 groovyc 5.0.6 javac 25.0.3 node 26.2.0 kotlinc 2.3.21 sbcl 2.2.9 lua 5.4.8 nim 2.2.10 fpc 3.2.2 fpc-themis 3.2.2 perl 5.36.0 php 8.5.6 pike 8.0 pypy3 7.3.23 python3 3.14.5 racket 8.7 ruby 4.0.5 rustc 1.96.0 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 tclsh 8.6 bun 1.3.14 deno 2.8.1 v 0.5.1 zig 0.16.0