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

Máy tạo xâu đối xứng

Đề bài

Mô tả

Cho một xâu s độ dài n gồm các chữ cái Latin thường. Các vị trí trong xâu được đánh số từ 1.

Bạn cần biến s thành một xâu đối xứng (palindrome) bằng cách áp dụng hai loại thao tác sau, tổng cộng không quá 30 lần:

  • Thao tác loại 1 (ký hiệu L i): chọn i với 2in1 (ở đây n là độ dài hiện tại của xâu), rồi thêm xâu con s2s3si (gồm i1 ký tự) theo thứ tự đảo ngược vào đầu xâu.
  • Thao tác loại 2 (ký hiệu R i): chọn i với 2in1, rồi thêm xâu con sisi+1sn1 (gồm ni ký tự) theo thứ tự đảo ngược vào cuối xâu.

Ví dụ, nếu s= abcdef và áp dụng thao tác loại 1 với i=3 thì ta thêm cb vào đầu xâu, được cbabcdef. Sau đó áp dụng thao tác loại 2 với i=5 lên xâu này ta được cbabcdefedc.

Xâu đối xứng thu được phải có độ dài không vượt quá 106. Bảo đảm luôn tồn tại lời giải thỏa mãn các ràng buộc trên. Bạn không cần tối thiểu hóa số thao tác hay độ dài xâu kết quả.

Dữ liệu vào

Một dòng duy nhất chứa xâu s gồm các chữ cái Latin thường.

Dữ liệu ra

Dòng đầu tiên chứa số nguyên k (0k30), số thao tác đã thực hiện.

k dòng tiếp theo, mỗi dòng mô tả một thao tác dưới dạng L i hoặc R i, trong đó L là thao tác loại 1, R là thao tác loại 2, còn i là chỉ số được chọn.

Nếu có nhiều đáp án, in ra một đáp án bất kỳ thỏa mãn ràng buộc.

Ràng buộc

  • 3|s|105
  • Số thao tác k30
  • Độ dài xâu kết quả không vượt quá 106

Ví dụ

Input Output Giải thích
abac 3
L 2
R 2
R 7
abac → babac → babacaba → babacabab, là xâu đối xứng.
acccc 3
L 2
R 2
R 9
Sau 3 thao tác thu được một xâu đối xứng độ dài 11.
hannah 3
L 2
R 2
R 11
Dãy 3 thao tác cố định luôn cho ra palindrome (ở đây độ dài 13). Vì hannah vốn đã đối xứng nên đáp án 0 thao tác cũng được chấp nhậ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.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