Hướng dẫn cho Vác tre


Chỉ sử dụng khi thực sự cần thiết như một cách tôn trọng tác giả và người viết hướng dẫn này.

Chép code từ bài hướng dẫn để nộp bài là hành vi có thể dẫn đến khóa tài khoản.

Authors: letangphuquy

Để tìm độ dài lớn nhất của cây tre có thể vác qua hẻm núi, bạn chỉ cần duyệt tất cả các độ dài có thể rồi kiểm tra xem cây tre có độ dài này có thể vác qua được bên kia hẻm núi hay không? Cụ thể, giả sử có \(L\) ô trống liên tiếp ở bên này của hẻm núi (cột thứ nhất), bạn chỉ cần thử 'vác' đi \(L\) lần với các độ dài của cây tre là $ 1,2,3, ..., L$.

Để kiểm tra, bạn có thể dùng một thuật toán tìm đường đi đơn giản trên đồ thị - DFS hoặc BFS. Ở bài này, để quản lí vị trí của cây tre ta cần 3 trạng thái \((x,y,d)\), trong đó \((x,y)\) là tọa độ ô góc trái trên của cây tre, còn \(d = 0/1\) là hướng mà nó đang được vác đi - ngang hay dọc?

Ngoài ra, để kiểm tra cây tre có bị vác vào ô có đá cao hay không, bạn cần tính trước một mảng QHĐ phụ : \(d(x,y,k)\) khoảng cách từ ô \((x,y)\) tới ô có đá cao gần nhất theo hướng \(k\).

Độ phức tạp thời gian: \(O(n^2 * m)\)



Bình luận

Không có bình luận nào.