Gửi bài giải
Điểm:
3,50 (OI)
Giới hạn thời gian:
1.0s
Giới hạn bộ nhớ:
256M
Input:
TREE.INP
Output:
TREE.OUT
Dạng bài
Ngôn ngữ cho phép
C, C++, C++ (Themis), Java, Pascal, Python, Scratch
Gia đình anh B có một khu vườn trồng ~N~ cây ăn quả được đánh số từ 1 đến ~N~, các cây được trồng không hoàn toàn thẳng hàng. Cây thứ ~i~ được trồng ở tọa độ là ~(x_i, y_i)~. Để tránh thú hoang phá hoại anh B cần làm một hàng rào bao quanh khu vườn với việc tận dụng một số cây đang trồng trong vườn làm trụ. Hàng rào được làm sao cho tất cả các cây còn lại trong khu vườn phải nằm phía trong hoặc trên hàng rào. Hình ảnh của hàng rào là một đa giác gồm ~K~ đỉnh, mỗi đỉnh là một trụ.
Yêu cầu: Hãy giúp anh B tìm một phương án rào khu vườn sao cho số lượng cây được sử dụng làm trụ là ít nhất.
Dữ liệu vào
Cho trong file TREE.INP có cấu trúc như sau:
- Dòng 1: Ghi số nguyên dương ~N~ là số lượng cây (~3 \leq N \leq 2000~).
- Dòng thứ ~i~ trong ~N~ dòng tiếp theo: Mỗi dòng là một cặp số nguyên ~x_i, y_i~ là hoành độ và tung độ của một cây trong vườn (~-32000 \leq x_i, y_i \leq 32000~). Hai số ghi cách nhau ít nhất một dấu cách.
Dữ liệu ra:
Ghi ra file văn bản TREE.OUT theo cấu trúc như sau:
- Dòng 1: Ghi số nguyên ~K~ là số lượng cây dùng làm trụ tìm được ít nhất.
Ví dụ:
Input: TREE.INP
5
0 4
4 0
-2 2
-1 1
0 -4
Output: TREE.OUT
4
Bình luận