trang chủ / đề bài / palintrans

Biến đổi Palindrome

Đề bài

Mô tả

Nam đang chỉnh sửa một xâu s gồm n chữ cái tiếng Anh in thường trên máy tính, chỉ dùng 4 phím mũi tên: trái, phải, lên, xuống.

Có một con trỏ đang chỉ vào một ký tự của xâu. Giả sử con trỏ đang ở vị trí i (1≤i≤n, xâu đánh số từ 1):

  • Phím trái / phải di chuyển con trỏ sang trái / phải một vị trí. Xâu có tính vòng tròn: nhấn trái tại vị trí 1 đưa con trỏ đến vị trí n, nhấn phải tại vị trí n đưa con trỏ về vị trí 1.
  • Phím lên / xuống thay ký tự tại vị trí con trỏ bằng ký tự liền sau / liền trước trong bảng chữ cái. Bảng chữ cái cũng có tính vòng tròn: sau 'z' là 'a', trước 'a' là 'z'.

Ban đầu con trỏ ở vị trí p. Hãy tính số lần nhấn phím ít nhất để biến s thành một xâu đối xứng (palindrome), tức là xâu đọc xuôi và đọc ngược giống nhau.

Dữ liệu vào

  • Dòng đầu chứa hai số nguyên n và p (1≤n≤105, 1≤p≤n): độ dài xâu và vị trí ban đầu của con trỏ.
  • Dòng thứ hai chứa xâu s gồm n chữ cái tiếng Anh in thường.

Dữ liệu ra

In ra một số nguyên duy nhất: số lần nhấn phím ít nhất để s trở thành palindrome.

Ràng buộc

  • 1≤n≤105
  • 1≤p≤n

Ví dụ

Input Output Giải thích
8 3
aeabcaez
6 Nhấn phải sang vị trí 4 (1 lần), nhấn lên đổi 'b' thành 'c' (1 lần), nhấn trái 3 lần về vị trí 1, nhấn xuống đổi 'a' thành 'z' (1 lần, vì bảng chữ cái vòng tròn). Xâu trở thành zeaccaez, là palindrome. Tổng cộng 6 lần nhấn.
10 5
abcdeedcba
0 Xâu đã là palindrome, không cần nhấn phím nào.
2 2
at
7 Đổi 't' thành 'a' mất 7 lần nhấn lên (t→u→...→z→a), hoặc đổi 'a' thành 't' cũng tối thiểu 7 lần. Con trỏ đã ở vị trí cần đổi nên không tốn lượt di chuyển.

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