BOI 2013 - Vim
Xem PDFVictor ngưỡng mộ nhà văn Ernest Vincent Wright, người viết tiểu thuyết Gadsby mà không dùng chữ e. Victor cũng viết một tiểu thuyết, chỉ sử dụng mười chữ cái đầu của bảng chữ cái: abcdefghij. Khi phím e bị hỏng giữa chừng, cậu quyết định xóa toàn bộ chữ e đã viết bằng trình soạn thảo Vim.
Victor chỉ biết ba lệnh:
x: xóa ký tự tại con trỏ. Chỉ số vị trí con trỏ tính từ trái không đổi, nên con trỏ nằm trên ký tự vốn ngay bên phải ký tự vừa xóa. Không được dùngxkhi con trỏ ở ký tự cuối cùng của văn bản. Lệnh tốn một lần nhấn phím.h: đưa con trỏ sang trái một ký tự. Nếu đã ở đầu văn bản thì không có gì thay đổi. Lệnh tốn một lần nhấn phím.fC: nhấnfrồi một ký tự \(C\), đưa con trỏ tới lần xuất hiện đầu tiên của \(C\) nằm bên phải vị trí hiện tại, kể cả khi ký tự hiện tại cũng là \(C\). Nếu không còn \(C\) bên phải thì con trỏ đứng yên. Lệnh tốn hai lần nhấn phím. Vì phímebị hỏng, không được dùngfe.
Để minh họa cách hoạt động của lệnh, dùng dấu ngoặc vuông đánh dấu ký tự dưới con trỏ; các dấu ngoặc không thuộc văn bản. Từ trạng thái jeff[i]ehadabigidea, thực hiện riêng từng lệnh cho kết quả:
| Lệnh | Trạng thái sau lệnh |
|---|---|
x |
jeff[e]hadabigidea |
h |
jef[f]iehadabigidea |
fi |
jeffiehadab[i]gidea |
Trong bài toán cần giải, Victor phải xóa tất cả chữ e và không xóa bất kỳ chữ nào khác; lệnh x ở hàng minh họa chỉ giải thích cơ chế của lệnh. Ban đầu con trỏ ở ký tự đầu tiên. Hãy tìm số lần nhấn phím ít nhất.
Dữ liệu vào
Dòng đầu chứa số nguyên \(N\), là độ dài văn bản. Dòng tiếp theo chứa \(N\) chữ cái thường từ a đến j. Ký tự đầu tiên và ký tự cuối cùng đều khác e.
Dữ liệu ra
Một số nguyên là số lần nhấn phím ít nhất để xóa hết các chữ e và giữ nguyên mọi chữ khác.
Ràng buộc
- \(1 \le N \le 70\,000\).
- Ký tự thuộc
abcdefghij; ký tự đầu và cuối kháce.
Phân nhóm
- \(50\) điểm: \(N\le500\).
- Thêm \(10\) điểm: \(N\le5000\).
- \(40\) điểm còn lại: không có ràng buộc bổ sung.
Ví dụ
Ví dụ 1
Input
35
chefeddiefedjeffeachbigagedegghehad
Output
36
Giải thích
Một dãy phím tối ưu là fdhxhhxffhxfahxhhhxhhhxfdhxfghxfahhx. Mỗi lần xuất hiện của f cùng ký tự tiếp theo tạo thành một lệnh tìm kiếm và tốn hai lần nhấn phím.
Kỳ thi:
- BOI 2013 - Ngày 2 (2 Tháng 1., 2013)
Bình luận