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.
Hướng tiếp cận
Bài toán hỏi diện tích đa giác đơn cho bởi danh sách đỉnh có thứ tự. Công cụ kinh điển là công thức Shoelace (công thức dây giày).
Nhận xét quan trọng
Với đa giác đơn có các đỉnh theo thứ tự (cùng chiều hoặc ngược chiều kim đồng hồ), ta có:
với quy ước .
Tổng bên trong có thể âm (nếu các đỉnh liệt kê theo chiều kim đồng hồ). Vì vậy bắt buộc lấy giá trị tuyệt đối.
Đề yêu cầu in ra chứ không phải — vì luôn là số nguyên còn có thể là số bán nguyên.
Thuật toán
đọc N
đọc các điểm (x[i], y[i]), i = 0..N-1
s = 0
for i = 0..N-1:
j = (i + 1) mod N
s += x[i] * y[j] - x[j] * y[i]
in ra |s|
Độ phức tạp
- Thời gian: .
- Bộ nhớ: để lưu các đỉnh.
Lưu ý cài đặt
- Với và , mỗi tích có thể tới , và tổng có thể tới — vượt phạm vi 32-bit. Phải dùng
long long.
Bình luận