Khó 0 đã giải Tỷ lệ chấp nhận 0%

Maximum Project Rewards

Choose nonoverlapping projects to earn the largest total reward.

Each project is [start_day, end_day, reward]. It occupies every day from start_day through end_day, including both endpoints. You can participate in only one project on a day. Choose a subset with the largest total reward. A project starting on another project’s end day conflicts with it.

Implement project_rewards(projects).

Input

projects: Rows of three integers: start day, end day, and reward.

Output

Return the maximum total reward; the chosen projects need not be returned.

Ràng buộc

1 ≤ projects ≤ 200,000. 1 ≤ start_day ≤ end_day ≤ 1,000,000,000. Rewards are positive integers at most 1,000,000,000.

Ví dụ

Ví dụ 1
Đầu vào:
projects = [
    [1, 2, 4],
    [3, 4, 5],
    [2, 3, 10]
]

Kết quả mong đợi:
expected = 10
Đầu vào:
std::vector<std::vector<long long>> projects = {
    {1, 2, 4},
    {3, 4, 5},
    {2, 3, 10}
};

Kết quả mong đợi:
long long expected = 10;
Đầu vào:
long[][] projects = new long[][] {
    new long[] {1, 2, 4},
    new long[] {3, 4, 5},
    new long[] {2, 3, 10}
};

Kết quả mong đợi:
long expected = 10;

Giải thích

The first two projects earn 9 together. The last earns 10 and conflicts with both, so choose it alone.

Ví dụ 2
Đầu vào:
projects = [
    [1, 2, 4],
    [2, 3, 5]
]

Kết quả mong đợi:
expected = 5
Đầu vào:
std::vector<std::vector<long long>> projects = {
    {1, 2, 4},
    {2, 3, 5}
};

Kết quả mong đợi:
long long expected = 5;
Đầu vào:
long[][] projects = new long[][] {
    new long[] {1, 2, 4},
    new long[] {2, 3, 5}
};

Kết quả mong đợi:
long expected = 5;

Giải thích

Both occupy day 2. Choose only the second, with reward 5.

Tham khảo

Thử thách này đã được điều chỉnh cho CodeUtility. Hãy làm theo đề bài và các ràng buộc ở trên.

Học hỏi từ người khác

Giải pháp cộng đồng

Chưa có giải pháp nào được chia sẻ. Hãy giải thử thách này để đăng giải pháp đầu tiên.