[Buổi 6][Mảng cộng dồn & mảng hiệu][ADV] Bài 1: Lệnh hiệu chỉnh nhiều tầng
Lệnh hiệu chỉnh nhiều tầng
Bối cảnh và bài toán
Một hệ thống có n tham số. Có m lệnh hiệu chỉnh đã định nghĩa sẵn; lệnh thứ i cộng một giá trị vào một đoạn tham số. Sau đó người quản trị gửi k yêu cầu, mỗi yêu cầu không tác động trực tiếp lên dữ liệu mà yêu cầu thực thi một đoạn liên tiếp các lệnh hiệu chỉnh trong danh sách.
Nếu mô phỏng từng yêu cầu rồi từng lệnh rồi từng phần tử, số thao tác có thể bùng nổ.
Yêu cầu
Tính mảng cuối cùng sau khi thực hiện tất cả yêu cầu.
Input
- Dòng 1:
n m k. - Dòng 2:
ngiá trị ban đầu. mdòng:l r dmô tả một lệnh range-add.kdòng:x y, yêu cầu thực thi mọi lệnh từxđếnythêm một lần.
Output
In n giá trị cuối cùng.
Ràng buộc
1 <= n, m, k <= 10^5|a[i]| <= 10^5|d[i]| <= 10^51 <= l <= r <= n1 <= x <= y <= m
Chấm điểm
| Subtask | Điểm | Điều kiện | Official tests |
|---|---|---|---|
| S1 | 20% | n, m, k ≤ 200 | 01–04 |
| S2 | 30% | n, m, k ≤ 7*10^4 | 05–10 |
| S3 | 50% | Không có ràng buộc bổ sung | 11–20 |
Ví dụ 1
Input
3 3 3
1 2 3
1 2 1
1 3 2
2 3 4
1 2
1 3
2 3
Output
9 18 17
Giải thích. Mỗi lệnh được thực thi một số lần khác nhau tùy số yêu cầu phủ chỉ số lệnh đó; sau khi gom số lần thực thi mới áp chúng lên mảng.
Ví dụ 2
Input
1 1 1
1
1 1 1
1 1
Output
2
Giải thích. Lệnh duy nhất được gọi một lần và tăng phần tử duy nhất thêm 1.
Thông tin bài tập
| Thuộc tính | Giá trị |
|---|---|
| Mã bài | DSA-M03-B06-ADV01 |
| Buổi | B06 |
| Loại bài | ADVANCED |
| Mức độ khó | Khó (Hard) |
| Thời gian làm bài khuyến nghị | 65 phút |
| Time limit | 2 giây |
| Memory limit | 256 MB |
| Tổng điểm | 100 |
| Chuẩn ngôn ngữ tham chiếu | C++17 |
Nguồn: Phỏng theo Codeforces 295A — Greg and Array.
Comments