Các bạn cho mình hỏi bài này phải giải quyết như thế nào ạ ?

Đề bài: Cho N điểm phân biệt bất kỳ, hãy viết giải thuật tìm ra 4 điểm từ N điểm đã cho mà 4 điểm đó tạo thành 1 tứ giác có diện tích lớn nhất.

Input

  • Dòng đầu tiên chứa 1 số nguyên N, số lượng điểm trong tập hợp đã cho
  • N dòng tiếp theo, mỗi dòng chứa 2 số nguyên cách nhau bằng 1 khoảng trắng là tọa độ xi yi của điểm thứ i trong tập hợp điểm, (không có 2 điểm nào trùng nhau)
  • Giới hạn: (4<=N<=106) ; (-106<= xi, y<=106)

Output: Gồm 1 dòng duy nhất chứa diện tích của tứ giác tìm được.

 

Bài này là 1 bài ACM ở đâu đó mình không nhớ. Nhưng cách giải là: Dùng graham scan để tìm bao lồi của tập điểm (NLogN)

Sau đó ta dc M điểm thuộc bao lồi. => 4 điểm của tứ giác phải thuộc M điểm này. Từ đây ta có thể cách giải M^2 để tìm 4 đỉnh. giống bài này (http://vn.spoj.com/problems/QBCAKE/). For cố định 1 đỉnh, for đỉnh đối diện. 2 đỉnh còn lại sẽ dùng neo biến. Bạn có thể tìm hiểu cách giải QBCAKE.

Rất hư cấu vì giải như vậy thì M chỉ giải dc khi <= vài nghìn. Nếu cố tình cho test chết thì vẫn chết. Nhưng mà nếu N đỉnh kia là random thì khả năng M nhỏ là rất lớn.

Trả lời doremon
  Hiện bài gốc

Mình cám ơn bạn nhiều lắm