Hướng dẫn giải của Nhà kính của Sprout
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 tương đương với bài toán Post Office kinh điển: đặt cơ sở trên đường thẳng để tối thiểu tổng khoảng cách tuyệt đối từ điểm đến cơ sở gần nhất.
Ta giải bằng quy hoạch động kết hợp tối ưu chia để trị (Divide and Conquer Optimization).
Nhận xét quan trọng
Sắp xếp: Sau khi sắp xếp các vị trí cây, phân hoạch tối ưu luôn chia thành đoạn con liên tiếp - mỗi đoạn được phục vụ bởi một nhà kính.
Vị trí tối ưu cho một đoạn: Với đoạn cây , nhà kính tối ưu nằm tại trung vị (với ), cho chi phí .
Tính nhanh chi phí đoạn: Dùng mảng tổng tiền tố (prefix sum), ta tính chi phí đoạn trong :
trong đó .
Bất đẳng thức tứ giác: Hàm thỏa mãn bất đẳng thức tứ giác (quadrangle inequality), tức là:
Điều này cho phép áp dụng tối ưu chia để trị trên DP.
Thuật toán
Sắp xếp các vị trí .
Xây dựng mảng tổng tiền tố .
DP cơ sở (): cho mọi .
DP lặp cho :
Gọi là giá trị tối ưu cho . Nhờ bất đẳng thức tứ giác, ta có . Điều này cho phép dùng chia để trị:
- Với đoạn , tính bằng cách duyệt .
- Tìm , sau đó đệ quy:
- Nửa trái với
- Nửa phải với
Kết quả: .
Độ phức tạp
- Thời gian: . Sắp xếp , mỗi vòng DP tốn nhờ chia để trị, lặp vòng.
- Bộ nhớ: - chỉ cần lưu hai hàng DP.
Bình luận