Đổi chỗ ký tự
Đề bài
Mô tả
Cho hai xâu và có cùng độ dài , chỉ gồm các chữ cái a và b.
Ta được phép thực hiện thao tác sau bao nhiêu lần tuỳ ý: chọn một chỉ số trong xâu và một chỉ số trong xâu (hai chỉ số này có thể bằng nhau hoặc khác nhau), rồi đổi chỗ hai ký tự và .
Hãy xác định số thao tác ít nhất cần thực hiện để hai xâu và trở nên giống hệt nhau, và in ra một dãy thao tác tối ưu bất kỳ. Nếu không thể làm cho hai xâu bằng nhau, hãy báo là không thể.
Dữ liệu vào
- Dòng đầu chứa số nguyên là độ dài của và .
- Dòng thứ hai chứa xâu gồm ký tự
ahoặcb. - Dòng thứ ba chứa xâu gồm ký tự
ahoặcb.
Dữ liệu ra
Nếu không thể làm cho hai xâu bằng nhau, in ra .
Ngược lại, dòng đầu in ra là số thao tác ít nhất. Trong dòng tiếp theo, mỗi dòng in ra hai số nguyên và mô tả thao tác tương ứng (đổi chỗ với ).
Nếu có nhiều dãy thao tác tối ưu, in ra dãy nào cũng được.
Ràng buộc
- và chỉ gồm các chữ cái
avàb
Ví dụ
| Input | Output | Giải thích |
|---|---|---|
| 1 a b |
-1 | Mỗi thao tác chỉ hoán đổi vị trí của các ký tự chứ không làm thay đổi tập ký tự chung, nên số ký tự a trong cả hai xâu luôn không đổi. Ở đây tổng số a bằng , là số lẻ, nên không thể chia đều cho hai xâu giống nhau. |
| 8 babbaabb abababaa |
3 2 6 1 3 7 8 |
Sau thao tác đầu = bbbbaabb, = ababaaaa; sau thao tác thứ hai = abbbaabb, = abbbaaaa; sau thao tác cuối cả hai xâu đều bằng abbbaaab. |
| 4 abab aabb |
2 3 3 3 2 |
Đổi chỗ ký tự thứ ba của với ký tự thứ ba của , được = abbb, = aaab. Sau đó đổi chỗ ký tự thứ ba của với ký tự thứ hai của , cả hai xâu đều thành abab. Không thể làm xong chỉ với một thao tác. |
Bình luận