Hướng dẫn giải của Trượt Tuyết Việt Dã
Chỉ dùng lời giải này khi không có ý tưởng, và đừng copy-paste code từ lời giải này. Hãy tôn trọng người ra đề và người viết lời giải.
Nộp một lời giải chính thức trước khi tự giải là một hành động có thể bị ban.
Nộp một lời giải chính thức trước khi tự giải là một hành động có thể bị ban.
Lời giải: Trượt Tuyết Việt Dã
Hướng tiếp cận
Tìm kiếm nhị phân trên giá trị , kết hợp BFS/DFS để kiểm tra tính liên thông của các điểm kiểm tra.
Nhận xét quan trọng
- Nếu đủ lớn thì toàn bộ lưới là một thành phần liên thông, nên câu trả lời tồn tại.
- Khi tăng lên, số cạnh có thể đi được chỉ tăng (không giảm), nên tính liên thông có tính đơn điệu: nếu hợp lệ thì mọi cũng hợp lệ.
- Ta có thể tìm kiếm nhị phân trên trong khoảng .
- Để kiểm tra một giá trị : BFS/DFS từ điểm kiểm tra đầu tiên, chỉ đi qua các cạnh có chênh lệch . Kiểm tra xem tất cả các điểm kiểm tra có đạt được không.
Thuật toán
- Tìm kiếm nhị phân trên với , .
- Với mỗi cần kiểm tra:
- Tìm một điểm kiểm tra bất kỳ làm nguồn.
- BFS/DFS trên lưới , mỗi bước chỉ sang ô kề có .
- Đếm số điểm kiểm tra đạt được. Nếu bằng tổng số điểm kiểm tra → hợp lệ.
- Trả về nhỏ nhất hợp lệ.
Độ phức tạp
- Thời gian:
- Bộ nhớ:
Bình luận