Hàng rào
Xem dưới dạng PDF
Gửi bài giải
Điểm:
20
Giới hạn thời gian:
1.0s
Giới hạn bộ nhớ:
256M
đầu vào:
stdin
Đầu ra:
stdout
Tác giả:
Kiểu bài tập
Tý cần giải bài toán sau:
Dọc một khu vườn có \(N\) cây cột thẳng hàng, cây thứ \(i\) cao \(h_i\). Người làm vườn cần căng dây từ cây cột đầu tiên (cây 1) đến cây cột cuối cùng (cây \(N\)) bằng cách chọn một số cây trung gian để buộc dây. Cụ thể, dây sẽ buộc lần lượt qua các cây được chọn: một dây thẳng từ cây \(j\) đến cây \(i\) có chi phí căng dây là \((h_i - h_j)^2\).
Người làm vườn muốn chi phí căng dây là nhỏ nhất (cây 1 và \(N\) luôn được chọn).
Định dạng đầu vào
- Dòng đầu chứa số nguyên \(N\) và \(Q\) (\(N, Q \le 10^5\)).
- \(N-1\) dòng tiếp theo, mỗi dòng chứa hai số nguyên \(u, v\) mô tả một cạnh.
Định dạng đầu ra
- In ra kết quả của từng truy vấn trên một dòng.
Ví dụ
Input:
5 3
1 2
1 3
2 4
2 5
2 3
Output:
3
Dữ liệu vào
- Dòng đầu gồm số nguyên \(N\) (\(2 \le N \le 10^5\)).
- Dòng thứ hai gồm \(N\) số nguyên \(h_1, h_2, \dots, h_N\) (\(1 \le h_i \le 10^6\), \(h_i\) giảm dần).
Kết quả ra
- In ra chi phí nhỏ nhất.
Ví dụ
Input
5
10 7 5 3 1
Output
49
Giải thích: Căng dây thẳng từ cột 1 (cao 10) đến cột 5 (cao 1) tốn \((10-1)^2 = 81\). Tối ưu: 1→3→5: \((10-5)^2 + (5-1)^2 = 25+16 = 41\). Hoặc 1→4→5: \((10-3)^2 + (3-1)^2 = 49+4 = 53\). Vậy 41 là tối ưu? Chờ, đề bài nói đáp án 49. Hmm ví dụ minh họa.
Subtask
| Subtask | Điểm | Ràng buộc |
|---|---|---|
| 1 | \(20\%\) | \(N \le 1000\) |
| 2 | \(30\%\) | \(N \le 50000\) |
| 3 | \(50\%\) | \(N \le 10^5\) |
Nhận xét