Hướng dẫn giải của TS10 - Tiền Giang 2025 - Tìm số lớn nhất
Chỉ dùng lời giải này khi không có ý tưởng, và đừng copy-paste code từ lời giải này. Hãy tôn trọng người ra đề và người làm lời giải.
Nộp code mẫu trước khi tự giải được bài tập là một hành vi có thể bị ban.
Tóm tắt đề
- Cho dãy số nguyên gồm phần tử () có giá trị ban đầu bằng 0.
- Cho truy vấn dạng tăng giá trị các phần tử trong đoạn lên .
- Sau truy vấn, tìm số lớn nhất trong mảng .
Giới hạn bài
- Subtask 1: Có 70% test:
- Subtask 2: Có 30% test:
Lời giải
Subtask 1:
Tiếp cận
Trong truy vấn sử dụng vòng for để tăng giá trị các phần tử trong đoạn lên . Kết thúc truy vấn, tìm max trong mảng.
Thực hiện
Với mỗi truy vấn, sử dụng một vòng lặp từ đến để tăng giá trị phần tử lên . Sau truy vấn, tìm max trong mảng .
Độ phức tạp
Subtask 2:
Tiếp cận
Với lớn, cần một cách khác tối ưu hơn để cập nhật giá trị của đoạn . Đây là ứng dụng cơ bản của mảng hiệu. Gọi là hiệu của với . Khi gặp truy vấn thì chỉ có hiệu của và hiệu của và thay đổi, cụ thể là tăng lên và giảm đi . Kết thúc truy vấn, tìm max trong mảng.
Thực hiện
Với mỗi truy vấn, tăng lên và giảm đi . Sau đó, cộng dồn mảng diff để tìm được từng , tìm max.
Độ phức tạp
.
Bình luận