canuc80k7506·7/20

Bệ Cao Dần

Nộp bài trên LQDOJ

Bài 7.6 · Li Chao Tree

Có bệ, được đánh số từ đến . Độ cao của bệ là và

Bạn bắt đầu ở bệ . Từ bệ , bạn có thể chuyển thẳng đến bất kỳ bệ nào. Mỗi lần chuyển như vậy có chi phí

Hãy tìm tổng chi phí nhỏ nhất để đến bệ .

Input

  • Dòng đầu chứa hai số nguyên và .
  • Dòng thứ hai chứa số nguyên .

Output

  • In ra một số nguyên: tổng chi phí nhỏ nhất để đến bệ .

Constraints

  • .
  • .
  • .

Scoring

  • Subtask ( số điểm): .
  • Subtask ( số điểm): Không có giới hạn bổ sung.

Example

Test 1

Input

6 7
2 5 6 11 12 20

Output

134

Giải thích: Một phương án tối ưu là đi qua các bệ . Chi phí lần lượt là , có tổng bằng .

Lời giải tóm tắt
  • Ý tưởng: Đặt dp[i] là chi phí nhỏ nhất để đến bệ i. Với bệ trước đó là j < i, ta có
  • Ý tưởng: dp[i] = min_{j<i}(dp[j] + (h_i - h_j)^2 + C).
  • Ý tưởng: Khai triển bình phương:
  • Ý tưởng: dp[i] = h_i^2 + C + min_{j<i}((-2h_j)·h_i + dp[j] + h_j^2).
  • Ý tưởng: Vì vậy trạng thái j tương ứng với đường có hệ số góc -2h_j và tung độ gốc dp[j] + h_j^2. Khởi tạo bằng đường của bệ 1; với mỗi i > 1, hỏi minimum tại h_i, tính dp[i], rồi chèn đường mới.
  • Ý tưởng: Trước truy vấn của i, cây chứa chính xác mọi bệ xuất phát j < i. Giá trị của đường j tại h_i, sau khi cộng phần cố định h_i^2 + C, bằng đúng chi phí đi tối ưu đến j rồi chuyển sang i. Do đó truy vấn cho dp[i] tối ưu; quy nạp suy ra đáp án tại bệ n là đúng.
  • Ý tưởng: Độ phức tạp: O(n log n) thời gian và O(n) bộ nhớ.