Khoảng cách Hamming sau một phép đổi

Đề bài

Mô tả

Cho hai xâu ST có cùng độ dài n, chỉ gồm các chữ cái Latin in thường.

Khoảng cách Hamming giữa hai xâu cùng độ dài là số vị trí mà ký tự ở ST khác nhau. Ví dụ, khoảng cách Hamming giữa "permanent" và "pergament" là 2 vì hai xâu khác nhau ở vị trí 46.

Bạn được phép đổi chỗ tối đa một cặp ký tự trong S (chọn hai vị trí ij rồi tráo Si với Sj). Hãy xác định khoảng cách Hamming nhỏ nhất giữa ST có thể đạt được sau thao tác này, và chỉ ra cặp vị trí cần đổi (nếu việc đổi chỗ giúp giảm khoảng cách).

Nếu không tồn tại cặp vị trí nào mà việc đổi chỗ giúp giảm khoảng cách Hamming, in ra -1 -1. Nếu có nhiều cách đáp số đúng, in ra một cách bất kỳ.

Dữ liệu vào

  • Dòng đầu chứa số nguyên n — độ dài của hai xâu.
  • Dòng thứ hai chứa xâu S.
  • Dòng thứ ba chứa xâu T.

Dữ liệu ra

  • Dòng đầu in ra số x — khoảng cách Hamming nhỏ nhất có thể đạt được.
  • Dòng thứ hai in ra hai chỉ số ij (1i,jn, ij) là cặp vị trí cần đổi chỗ trong S để đạt được khoảng cách đó; hoặc in -1 -1 nếu không cần (hoặc không thể giảm khoảng cách bằng việc đổi chỗ).

Ràng buộc

  • 1n200000
  • ST chỉ gồm các chữ cái Latin in thường.

Ví dụ

Input Output Giải thích
9
pergament
permanent
1
4 6
Khoảng cách ban đầu là 2. Đổi chỗ vị trí 46 trong S: "pergament" → "permanget", khoảng cách còn 1.
6
wookie
cookie
1
-1 -1
Khoảng cách ban đầu là 1. Không có cách đổi chỗ nào làm giảm thêm.
4
petr
egor
2
1 2
Khoảng cách ban đầu là 3. Đổi chỗ vị trí 12: "petr" → "eptr", khoảng cách còn 2.
6
double
bundle
2
4 1
Khoảng cách ban đầu là 4. Đổi chỗ vị trí 41: "double" → "boudle", khoảng cách còn 2.

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