QJ511 - Dịch máy

Xem dưới dạng PDF

Gửi bài giải

Điểm: 100
Giới hạn thời gian: 1.0s
Giới hạn bộ nhớ: 256M

Tác giả:
Kiểu bài tập

Mô tả bài toán: Máy tính của Tiểu Thần cài đặt một phần mềm dịch máy, cậu ấy thường dùng phần mềm này để dịch các bài viết tiếng Anh.

Nguyên lý của phần mềm dịch này rất đơn giản, nó chỉ lần lượt từ đầu đến cuối thay thế từng từ tiếng Anh bằng nghĩa tiếng Trung tương ứng. Đối với mỗi từ tiếng Anh, phần mềm trước tiên sẽ tìm kiếm nghĩa tiếng Trung của từ này trong bộ nhớ. Nếu bộ nhớ có sẵn, phần mềm sẽ dùng nghĩa này để dịch; nếu không có, phần mềm sẽ tìm kiếm trong từ điển ở bộ nhớ ngoài, tra ra nghĩa tiếng Trung rồi dịch, đồng thời đưa từ này cùng nghĩa của nó vào bộ nhớ để phục vụ các lần tra cứu và dịch sau này.

Giả sử bộ nhớ có $M$ đơn vị, mỗi đơn vị lưu được một từ cùng nghĩa của nó. Trước khi lưu một từ mới vào bộ nhớ, nếu số từ hiện tại trong bộ nhớ không vượt quá $M - 1$, phần mềm sẽ lưu từ mới vào một đơn vị bộ nhớ chưa dùng. Nếu bộ nhớ đã đầy (đã lưu đủ $M$ từ), phần mềm sẽ xóa từ được đưa vào bộ nhớ sớm nhất để dành chỗ lưu từ mới.

Giả sử một bài viết tiếng Anh có độ dài $N$ từ. Cho trước bài viết cần dịch này, phần mềm dịch cần tra từ điển ở bộ nhớ ngoài bao nhiêu lần? Giả sử trước khi bắt đầu dịch, bộ nhớ không có bất kỳ từ nào.

Input: Gồm hai dòng, các số trên mỗi dòng được phân tách bởi khoảng trắng. Dòng thứ nhất chứa hai số nguyên dương $M$ và $N$, lần lượt là dung lượng bộ nhớ và độ dài bài viết. Dòng thứ hai chứa $N$ số nguyên không âm (mỗi số có giá trị không vượt quá $1000$), lần lượt biểu thị các từ tiếng Anh trong bài viết. Hai từ trong bài viết là giống nhau khi và chỉ khi các số nguyên không âm tương ứng của chúng bằng nhau. Trong đó, $0 < M \le 100$, $0 < N \le 1000$.

Output: Một dòng, chứa một số nguyên là số lần phần mềm cần tra từ điển.

Input mẫu:

3 7
1 2 1 5 4 4 1

Output mẫu:

5

Nhận xét

Không có ý kiến tại thời điểm này.