canuc80k2602·3/50

Vườn Hoa Có Thứ Tự

Nộp bài trên LQDOJ

Bài 26 · Advanced DP

Có bông hoa nằm trên một hàng từ trái sang phải. Hoa thứ có chiều cao và giá trị thẩm mỹ . Các chiều cao đôi một khác nhau.

Bạn được giữ lại một số bông hoa và bỏ các bông còn lại. Những bông được giữ phải có chiều cao tăng nghiêm ngặt khi đọc từ trái sang phải. Hãy tìm tổng giá trị thẩm mỹ lớn nhất có thể giữ lại.

Input

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

Output

  • In tổng giá trị thẩm mỹ lớn nhất của một dãy hoa hợp lệ.

Constraints

  • .
  • và các đôi một khác nhau; vì vậy dãy chiều cao là một hoán vị của .
  • .
  • Đáp án nằm trong đoạn từ đến (không vượt quá ), nên có thể lớn hơn giới hạn số nguyên -bit.

Scoring

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

Example

Test 1

Input

6
4 1 5 2 6 3
8 10 4 20 7 30

Output

60

Giải thích: Giữ các hoa ở vị trí cho dãy chiều cao và tổng giá trị . Tổng tốt nhất của một dãy hợp lệ kết thúc lần lượt tại sáu vị trí là , nên không lựa chọn nào có tổng lớn hơn .

Lời giải tóm tắt
  • Phân tích: Gọi dp[i] là tổng giá trị lớn nhất của một dãy hợp lệ kết thúc tại hoa i. Khi đó dp[i] = b_i + max(dp[j]) trên mọi j < i có h_j < h_i. Phần khó là lấy nhanh giá trị lớn nhất trên miền chiều cao nhỏ hơn h_i.
  • Thuật toán: Duyệt hoa từ trái sang phải. Fenwick tree tại trục chiều cao lưu phép max: truy vấn tiền tố h_i - 1 cho tổng tốt nhất của mọi dãy kết thúc ở chiều cao nhỏ hơn, rồi cộng b_i và cập nhật điểm h_i. Vì cây chỉ chứa các hoa đã duyệt, điều kiện thứ tự vị trí được bảo toàn tự động.
  • Chứng minh tính đúng đắn: Mọi dãy hợp lệ kết thúc ở i hoặc chỉ gồm hoa i, hoặc có hoa cuối trước đó mang chiều cao nhỏ hơn h_i; truy vấn Fenwick xét đúng toàn bộ các khả năng này. Nối hoa i vào dãy do truy vấn chọn luôn hợp lệ về cả vị trí lẫn chiều cao. Do đó giá trị cập nhật bằng đúng dp[i]; lấy lớn nhất qua mọi i cho tối ưu toàn cục.
  • Độ phức tạp: Thời gian O(n log n), bộ nhớ O(n).