Giải thích: Sau phép modulo đầu, ba phần tử đầu trở thành 4,1,5, nên tổng là 22. Sau khi gán vị trí 2 bằng 20 rồi lấy modulo 7 trên đoạn cuối, đoạn [2,4] có tổng 6+5+5=16.
Lời giải tóm tắt
Mô hình: Hỗ trợ truy vấn tổng, lấy phần dư theo một số trên đoạn và gán một phần tử.
Thuật toán: Cây lưu tổng và cực đại. Nếu cực đại nhỏ hơn mô-đun thì cả đoạn không đổi; mỗi lần một giá trị thật sự đổi bởi modulo, nó giảm xuống dưới một nửa.
Thuật toán: Các truy vấn đọc kết quả từ các thống kê đã được duy trì. Mọi thao tác lazy đều được đẩy xuống trước khi tách nút, rồi nút cha được ghép lại từ hai con.
Tính đúng đắn: Ta chứng minh bằng quy nạp theo cây. Ở lá, giá trị lưu chính là giá trị hiện tại của phần tử. Ở một nút trong, điều kiện áp dụng nhanh chỉ được dùng khi thống kê của nút chứng minh rằng mọi phần tử chịu cùng một biến đổi; vì vậy cập nhật các trường tổng hợp là chính xác. Nếu điều kiện đó không đúng, thuật toán đẩy tag, xử lý hai con và ghép lại, nên giả thiết quy nạp cho kết quả đúng. Các nhánh bị bỏ qua đều nằm ngoài đoạn hoặc đã được chứng minh là bất biến. Do đó mọi cập nhật và truy vấn đều đúng theo contract.
Độ phức tạp: Amortized O((n+m) log n log V); bộ nhớ O(n).