cpp-007Đọc toàn bộ đề miễn phí
Mảng cộng dồn và truy vấn đoạn con
Một máy chủ xử lý dữ liệu AI của AI Empire ghi nhận lượng gói tin xử lý trong N giây liên tiếp thành một dãy số nguyên không âm A1, A2, …, AN (0 ≤ Ai ≤ 109).
Tiến độ của tôi ở bài này
Điểm được lưu vào tài khoản sau khi chấm bài.
Đang tải điểm của bạn…
Kiến thức và chủ đề
Kiến thức tiên quyết: std vector, prefix sum, loops.
Nội dung đề bài
Mục tiêu kiến thức
- Xây dựng và sử dụng mảng cộng dồn (Prefix Sum Array) để trả lời mỗi truy vấn tổng đoạn con trong thời gian O(1).
- Kỹ thuật hai con trỏ (Two Pointers) để tìm độ dài đoạn con liên tiếp dài nhất thỏa mãn điều kiện tổng ≤ S trong thời gian O(N).
- Tối ưu hóa nhập xuất (Fast I/O) khi làm việc với dữ liệu lớn (N, Q ≤ 105).
- Sử dụng kiểu dữ liệu 64-bit
long longtránh tràn số khi cộng dồn.
Mô tả bài toán
Một máy chủ xử lý dữ liệu AI của AI Empire ghi nhận lượng gói tin xử lý trong N giây liên tiếp thành một dãy số nguyên không âm A1, A2, …, AN (0 ≤ Ai ≤ 109).
Hệ thống cần bạn giải quyết hai bài toán giám sát:
- Tìm khoảng thời gian tải ổn định: Tìm độ dài lớn nhất K của một đoạn con liên tiếp các giây [i, j] sao cho tổng lượng gói tin trong đoạn đó không vượt quá ngưỡng S cho trước: ∑k=ij Ak ≤ S. Nếu mọi phần tử đều lớn hơn S, độ dài lớn nhất là 0.
- Xử lý Q truy vấn kiểm tra: Cho Q truy vấn, mỗi truy vấn gồm 2 chỉ số L và R (1 ≤ L ≤ R ≤ N), hãy in ra tổng lượng gói tin từ giây thứ L đến giây thứ R: ∑k=LR Ak.
Quy ước nộp bài
- Chỉ cần viết một chương trình đọc
stdinvà in rastdout. Bài này không yêu cầu viết hàm. - Không dùng
coutđể in lời nhắc trước khi đọc dữ liệu. Lời nhắc sẽ lọt vàostdoutvà làm bài sai. - Chỉ in đúng nội dung ở mục Output. Không in thêm nhãn, dòng trống hay ký tự thừa.
- Output được so khớp từng ký tự, phân biệt chữ hoa/thường và dấu câu.
Input
- Dòng 1: Gồm 3 số nguyên N, Q, S (1 ≤ N, Q ≤ 105, 0 ≤ S ≤ 1014).
- Dòng 2: Gồm N số nguyên không âm A1, A2, …, AN (0 ≤ Ai ≤ 109).
- Q dòng tiếp theo: Mỗi dòng gồm 2 số nguyên L, R (1 ≤ L ≤ R ≤ N).
Output
- Dòng 1: In một số nguyên duy nhất là độ dài đoạn con liên tiếp dài nhất có tổng ≤ S.
- Q dòng tiếp theo: Mỗi dòng in một số nguyên là kết quả tổng của đoạn con [L, R] tương ứng.
Ràng buộc
- 1 ≤ N, Q ≤ 105.
- 0 ≤ Ai ≤ 109.
- 0 ≤ S ≤ 1014.
- 1 ≤ L ≤ R ≤ N.
- Thời gian chạy: 1000ms.
- Bộ nhớ tối đa: 256MB.
Ví dụ 1
Input
5 3 10
2 3 1 4 2
1 3
2 4
1 5Output
4
6
8
12Giải thích
- Đoạn dài nhất có tổng ≤ 10 là đoạn gồm 4 phần tử đầu tiên [2, 3, 1, 4] với tổng 2 + 3 + 1 + 4 = 10 ≤ 10. Độ dài = 4.
- Truy vấn 1: [1, 3] → 2 + 3 + 1 = 6.
- Truy vấn 2: [2, 4] → 3 + 1 + 4 = 8.
- Truy vấn 3: [1, 5] → 2 + 3 + 1 + 4 + 2 = 12.
3 cấp độ gợi ýMở dần khi bạn thật sự cần hỗ trợ.
Phân tích lời giảiGiải thích hướng tư duy và thuật toán.
Code tham khảoDùng để đối chiếu sau khi tự làm.
Gợi ý và lời giải chỉ mở sau khi bạn bấm Nộp bài. Giáo viên và quản trị viên mở được ngay.
Góp ý & báo lỗi bài tập
Đề bài chưa rõ, test có vấn đề hay bạn có ý tưởng giúp bài tốt hơn? Gửi cho đội ngũ AI Empire nhé — mỗi góp ý đều được đọc.
