Đề bài
Xem bản dịchEach 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ụ
Đầ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.
Đầ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.