trang chủ / đề bài / convhull

Chu vi bao lồi

Đề bài

Mô tả

Cho N điểm trên mặt phẳng tọa độ với tọa độ nguyên. Bao lồi của tập điểm là đa giác lồi nhỏ nhất chứa toàn bộ N điểm. Hãy tính chu vi của bao lồi đó.

Dữ liệu vào

  • Dòng đầu chứa một số nguyên N — số điểm.
  • N dòng tiếp theo, mỗi dòng chứa hai số nguyên xi và yi.

Dữ liệu ra

Một số thực duy nhất — chu vi bao lồi, in với ít nhất 6 chữ số sau dấu phẩy. Sai số tuyệt đối hoặc tương đối 10−4 được chấp nhận.

Trường hợp suy biến:

  • Nếu N=1: chu vi bằng 0.
  • Nếu tất cả các điểm thẳng hàng (bao lồi suy biến thành đoạn thẳng): chu vi bằng hai lần độ dài đoạn thẳng nối hai điểm xa nhau nhất trên đường thẳng đó.

Ràng buộc

  • 1≤N≤105.
  • −106≤xi,yi≤106.
  • Các điểm có thể trùng nhau.

Ví dụ

Input Output Giải thích
4
0 0
4 0
4 3
0 3
14.000000 Bao lồi là hình chữ nhật 4×3, chu vi 2(4+3)=14.
5
0 0
2 0
2 2
0 2
1 1
8.000000 Điểm (1,1) nằm trong, bao lồi là hình vuông cạnh 2, chu vi 8.
3
0 0
1 1
2 2
5.656854 Ba điểm thẳng hàng. Đoạn dài nhất là từ (0,0) tới (2,2), độ dài 22, chu vi =42≈5.656854.

Ghi chú

Sử dụng kiểu double (hoặc long double) khi cộng các cạnh; phần tính bao lồi nên giữ ở số nguyên (cross product là số nguyên) để tránh sai số.

Bình luận

Không có bình luận tại thời điểm này.

gnatmake 12.2.0 a68g 3.1.2 nasm 2.16.1 as_x64 2.47 awk 1.3.4 gcc 16.2.0 dotnet 10.0.402 g++ 16.2.0 g++-themis 16.2.0 g++17 16.2.0 g++20 16.2.0 g++23 16.2.0 clang++ 22.1.8 dmd 2.113.0 dart 3.13.6 gforth 0.7.3 gfortran 15.3.0 go 1.27.3 groovyc 5.1.3 javac 26.0.2.1 node 26.12.1 julia 1.13.2 kotlinc 2.4.21 lean 4.35.0 sbcl 2.2.9 lua 5.5.1 nim 2.2.12 fpc 3.2.2 fpc-themis 3.2.2 perl 5.42.3 php 8.5.12 pike 8.0 swipl 9.0.4 pypy3 7.3.23 python3 3.15.1 racket 8.7 ruby 4.0.8 rustc 1.99.1 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 swiftc 6.4.1 tclsh 8.6 bun 1.4.4 deno 2.9.8 v 0.5.2 zig 0.17.0