Truyền màn chơi tiết kiệm
Đề bài
Mô tả
Khi tải dữ liệu của một trò chơi, bạn cần nhận mô tả của màn chơi từ máy chủ. Mỗi mô tả là một bản đồ dạng lưới ô vuông kích thước . Một số ô của bản đồ chứa kẹo (mỗi ô chứa nhiều nhất một viên). Ô trống được ký hiệu bởi dấu chấm ., còn ô chứa kẹo được ký hiệu bởi một chữ cái Latinh (chữ hoa và chữ thường được phân biệt). Các viên kẹo giống nhau ở các màn chơi khác nhau có thể được biểu diễn bằng cùng một chữ cái.
Khi truyền dữ liệu qua mạng, bạn muốn giảm tổng số byte phải truyền. Các màn chơi có thể được truyền theo thứ tự bất kỳ. Với mỗi màn chơi , có hai cách truyền:
- Truyền toàn bộ màn chơi — tốn byte.
- Nếu đã có một màn chơi được truyền trước đó, có thể truyền hiệu giữa và — tốn byte, trong đó là số ô khác nhau giữa và (so sánh từng cặp ô tương ứng — không xoay, không dịch chuyển bản đồ), còn là một hằng số cho trước.
Hãy tìm cách truyền cả màn chơi sao cho tổng số byte truyền là nhỏ nhất.
Dữ liệu vào
- Dòng đầu chứa bốn số nguyên , , , .
- Tiếp theo là mô tả của màn chơi. Mỗi màn chơi gồm dòng, mỗi dòng gồm ký tự (chữ cái Latinh hoa/thường, hoặc dấu
.). Các màn chơi được đánh số từ đến theo thứ tự xuất hiện trong dữ liệu vào.
Dữ liệu ra
- Dòng đầu in tổng số byte nhỏ nhất phải truyền.
- dòng tiếp theo, mỗi dòng gồm hai số nguyên và , mô tả thứ tự truyền: màn chơi thứ được truyền ở bước theo cách . Nếu thì truyền toàn bộ; ngược lại là số hiệu của một màn chơi đã được truyền trước đó và ta truyền hiệu giữa màn và màn .
Nếu có nhiều phương án tối ưu, in ra phương án bất kỳ.
Ràng buộc
Ví dụ
| Input | Output | Giải thích |
|---|---|---|
| 2 3 3 2 A.A ... A.a ..C X.Y ... |
14 1 0 2 1 3 1 |
Truyền màn 1 nguyên vẹn ( byte). Truyền màn 2 dưới dạng hiệu với màn 1: hai bản đồ khác nhau ở ô, tốn byte. Truyền màn 3 dưới dạng hiệu với màn 1: khác nhau ở ô, tốn byte. Tổng cộng byte. |
| 1 1 4 1 A . B . |
3 1 0 2 0 3 0 4 2 |
Có màn, kích thước , . Phương án trên truyền màn nguyên vẹn (mỗi màn byte) và một màn dưới dạng hiệu với chi phí , tổng cộng byte. Các đáp án tối ưu khác cũng được chấp nhận. |
Bình luận