Slava và xe tăng
Đề bài
Mô tả
Bản đồ là một dải ô kích thước , các ô được đánh số từ đến . Trong mỗi ô có thể có không, một hoặc nhiều xe tăng. Bạn không biết số lượng xe tăng cũng như vị trí của chúng, nhưng bạn có thể thả bom vào một ô bất kỳ. Khi thả bom vào một ô, tất cả xe tăng đang ở ô đó nhận sát thương.
Quy tắc di chuyển của xe tăng:
- Khi một xe tăng nhận sát thương lần đầu tiên, nó lập tức di chuyển sang một ô kề bên. Xe tăng ở ô chỉ có thể sang ô , xe tăng ở ô chỉ có thể sang ô ; xe tăng ở ô trong () có thể sang ô hoặc ô (bạn không kiểm soát được hướng di chuyển).
- Khi một xe tăng nhận sát thương lần thứ hai, nó bị phá hủy và không bao giờ di chuyển nữa.
- Xe tăng chỉ di chuyển đúng một lần, ngay khi nhận sát thương lần đầu; ngoài ra chúng đứng yên.
Hãy tìm một dãy thả bom sao cho mọi xe tăng đều bị phá hủy, bất kể ban đầu chúng ở đâu, và số quả bom là ít nhất.
Dữ liệu vào
Một dòng duy nhất chứa số nguyên là kích thước bản đồ.
Dữ liệu ra
Dòng đầu in ra là số quả bom ít nhất cần dùng.
Dòng thứ hai in ra số nguyên , trong đó là ô mà quả bom thứ được thả xuống (theo đúng thứ tự thả).
Nếu có nhiều đáp án tối ưu, bạn có thể in ra bất kỳ đáp án nào.
Ràng buộc
Ví dụ
| Input | Output | Giải thích |
|---|---|---|
| 2 | 3 2 1 2 |
Bom ô 2: xe tăng ở ô 2 dạt sang ô 1. Bom ô 1: xe tăng ở ô 1 (gồm cả xe vừa dạt sang) nhận sát thương, xe gốc ở ô 1 dạt sang ô 2, xe từ ô 2 bị phá hủy. Bom ô 2: phá hủy nốt xe gốc ở ô 1. |
| 3 | 4 2 1 3 2 |
Bom ô chẵn (2), rồi ô lẻ (1, 3), rồi lại ô chẵn (2). Mọi xe tăng đều bị đánh trúng đủ hai lần. |
Bình luận