canuc80k0433·34/50

Tổng Thưởng Hoàn Thành

Nộp bài trên LQDOJ

Bài 04 · Greedy

Có công việc cần thực hiện lần lượt trên một máy. Công việc thứ có thời lượng và một mốc mục tiêu .

Thời điểm ban đầu là . Bạn phải thực hiện tất cả công việc, mỗi lần chỉ làm một công việc và không ngắt giữa chừng. Nếu công việc hoàn thành tại thời điểm , phần thưởng của công việc đó là .

Phần thưởng có thể âm. Hãy chọn thứ tự thực hiện để tổng phần thưởng lớn nhất.

Input

  • Dòng đầu chứa số nguyên .
  • dòng tiếp theo, dòng thứ chứa hai số nguyên và - thời lượng và mốc mục tiêu của công việc thứ .

Output

  • In ra một số nguyên - tổng phần thưởng lớn nhất có thể đạt được.

Constraints

  • .
  • .
  • Phải thực hiện tất cả công việc, kể cả khi phần thưởng của một công việc âm.
  • Kết quả cần kiểu số nguyên -bit.

Scoring

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

Example

Test 1

Input

4
3 10
1 7
2 9
4 20

Output

26

Giải thích: Thực hiện theo thời lượng cho các thời điểm hoàn thành . Tổng thưởng là .

Lời giải tóm tắt
  • Phân tích và thuật toán: Tổng d_i không phụ thuộc thứ tự, nên tối đa hóa
  • Phân tích và thuật toán: [ \sum(d_i-f_i) ]
  • Phân tích và thuật toán: tương đương tối thiểu hóa tổng thời điểm hoàn thành \sum f_i.
  • Phân tích và thuật toán: Sắp xếp các công việc theo thời lượng tăng dần. Duy trì thời điểm hiện tại now; sau mỗi công việc cập nhật now += a_i và cộng d_i-now vào đáp án.
  • Chứng minh đúng: Xét hai công việc liên tiếp có thời lượng p>q, bắt đầu tại thời điểm T. Nếu làm p trước q, tổng thời điểm hoàn thành của cặp là (T+p)+(T+p+q). Nếu đổi thành q trước p, tổng là (T+q)+(T+q+p), nhỏ hơn đúng p-q.
  • Chứng minh đúng: Tổng thời lượng của cặp không đổi nên thời điểm hoàn thành của mọi công việc phía sau không đổi. Vì vậy mọi nghịch thế thời lượng có thể được đổi để cải thiện hoặc giữ mục tiêu. Sau khi loại hết nghịch thế, ta nhận thứ tự thời lượng tăng dần với tổng thời điểm hoàn thành nhỏ nhất, do đó tổng phần thưởng lớn nhất.
  • Độ phức tạp: O(n log n) thời gian do sắp xếp và O(n) bộ nhớ.