canuc80k2641·42/50

Chọn Điểm Để Kích Hoạt Các Khoảng

Nộp bài trên LQDOJ

Bài 26 · Advanced DP

Trên trục có vị trí đánh số từ đến . Bạn được chọn một tập vị trí bất kỳ, kể cả tập rỗng.

Có khoảng có trọng số. Khoảng thứ là và mang trọng số . Khoảng này đóng góp vào tổng điểm khi trong đoạn từ đến có ít nhất một vị trí được chọn; nếu không, nó đóng góp . Các khoảng được tính độc lập, kể cả khi chúng trùng nhau.

Hãy tìm điểm lớn nhất có thể đạt được.

Input

  • Dòng đầu chứa và .
  • Mỗi trong dòng tiếp theo chứa .

Output

  • In điểm lớn nhất.

Constraints

  • .
  • .
  • .

Scoring

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

Example

Test 1

Input

4 4
1 2 5
2 4 7
1 4 -4
3 3 -10

Output

8

Giải thích: Chọn vị trí . Ba khoảng đầu được kích hoạt, còn khoảng không được kích hoạt, nên điểm là . Không cách chọn nào đạt điểm lớn hơn.

Lời giải tóm tắt
  • Ý tưởng: Quét đầu phải của các khoảng từ trái sang phải. Trạng thái quan trọng không phải toàn bộ tập đã chọn, mà chỉ là vị trí được chọn cuối cùng.
  • Ý tưởng: Sau khi xử lý các khoảng có đầu phải không vượt quá i, đặt val[j] là điểm tốt nhất của một cấu hình mà vị trí chọn cuối cùng là j; j=0 biểu diễn chưa chọn vị trí nào.
  • Chuyển trạng thái: Trước khi xử lý các khoảng kết thúc tại i, ta có thể chọn vị trí i từ bất kỳ cấu hình cũ nào. Vì vậy gán
  • Chuyển trạng thái: val[i] = max_j val[j].
  • Chuyển trạng thái: Xét khoảng [l,i] có trọng số a. Khi đã quét tới i, khoảng này được kích hoạt khi và chỉ khi vị trí chọn cuối cùng j thỏa l≤j≤i. Do đó cần cộng a cho toàn bộ val[l..i].
  • Chuyển trạng thái: Ta cần ba phép toán:
  • Chuyển trạng thái: lấy maximum trên toàn bộ trạng thái;
  • Chuyển trạng thái: gán một điểm;
  • Chuyển trạng thái: cộng một giá trị trên một đoạn.
  • Chuyển trạng thái: Cây đoạn lazy hỗ trợ mỗi phép trong O(log N).
  • Chứng minh: Khi một khoảng kết thúc tại i, mọi vị trí đã chọn đều không vượt i; khoảng có ít nhất một vị trí chọn đúng khi vị trí chọn cuối cùng nằm từ l tới i. Vì vậy range-add cập nhật đúng và chỉ các cấu hình kích hoạt khoảng. Gán trạng thái i từ maximum toàn cục xét đầy đủ quyết định chọn i, còn các trạng thái cũ biểu diễn quyết định không chọn. Quy nạp theo i cho thấy cây đoạn lưu đúng giá trị tối ưu cho mỗi vị trí chọn cuối. Sau khi xử lý mọi khoảng, maximum toàn cục là điểm tối ưu; trạng thái 0 bảo đảm tập rỗng với điểm 0 luôn được xét.
  • Độ phức tạp: O((N+M)log N) thời gian và O(N+M) bộ nhớ.