CEOI 2026 - Vim

Xem PDF



Dạng bài
Ngôn ngữ cho phép
Assembly, Awk, C, C#, C++, Clang, Cobol, D, Groovy, Haskell, JS, Java, Kotlin, Lua, Node JS, OCaml, ObjectiveC, Output, PHP, Pascal, Perl, Prolog, Pypy, Pypy 3, Python, Ruby, Rust, Scala, Scratch, Swift
Điểm: 2500 (p) Thời gian: 1.0s Bộ nhớ: 256M Input: bàn phím Output: màn hình

Ban đầu văn bản Vim chỉ chứa một ký tự -, con trỏ ở ký tự này và clipboard rỗng. Cần thu được đúng \(n\) dấu trừ liên tiếp. Các lệnh được phép là:

  • h: sang trái, hoặc không làm gì nếu ở ký tự đầu.
  • l: sang phải, hoặc không làm gì nếu ở ký tự cuối.
  • Y: chép hậu tố từ con trỏ đến cuối văn bản vào clipboard.
  • P: chèn một bản sao clipboard ngay trước con trỏ và đưa con trỏ tới ký tự vừa chèn cuối cùng; clipboard rỗng thì không làm gì.

Với mỗi \(n\), hãy in số lệnh ít nhất và một dãy lệnh đạt số đó.

Dữ liệu vào

Dòng đầu chứa \(t\). \(t\) dòng tiếp theo, mỗi dòng chứa một giá trị \(n\).

Dữ liệu ra

Với mỗi test, in một dòng gồm số lệnh ít nhất, một dấu cách, và một dãy lệnh đạt đúng số đó.

Ràng buộc

  • \(1\le t\le100\), \(1\le n\le10^7\).

Phân nhóm

  1. \(20\) điểm: \(n\le100\).
  2. \(8\) điểm: \(n\le1000\).
  3. \(18\) điểm: \(n\le10^4\).
  4. \(18\) điểm: \(n\le10^5\).
  5. \(18\) điểm: \(n\le10^6\).
  6. \(18\) điểm: không có ràng buộc thêm.

Nếu mọi số lệnh tối ưu nhưng một dãy lệnh thiếu hoặc không hợp lệ, nhận một nửa điểm của phân nhóm đó.

Ví dụ

Ví dụ

Input
2
21
2
Output
10 YPYPhPYPPP
2 YP

Nguồn

CEOI 2026 - Ngày 2, bài Vim.

Đề bài, dữ liệu kiểm thử và lời giải tham khảo được lấy từ nguồn CEOI 2026 chính thức.

Bình luận

Mới nhất
Tải bình luận...

Không có bình luận nào.

Kỳ thi: