Máy tạo xâu đối xứng
Đề bài
Mô tả
Cho một xâu độ dài gồm các chữ cái Latin thường. Các vị trí trong xâu được đánh số từ .
Bạn cần biến 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á lần:
- Thao tác loại 1 (ký hiệu
L i): chọn với (ở đây là độ dài hiện tại của xâu), rồi thêm xâu con (gồm 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 với , rồi thêm xâu con (gồm ký tự) theo thứ tự đảo ngược vào cuối xâu.
Ví dụ, nếu abcdef và áp dụng thao tác loại 1 với thì ta thêm cb vào đầu xâu, được cbabcdef. Sau đó áp dụng thao tác loại 2 với 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á . 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 gồm các chữ cái Latin thường.
Dữ liệu ra
Dòng đầu tiên chứa số nguyên (), số thao tác đã thực hiện.
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 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
- Số thao tác
- Độ dài xâu kết quả không vượt quá
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