canuc80k2408·9/50

Tổng Theo Số Dư

Nộp bài trên LQDOJ

Bài 2.5 · Sqrt Decomposition

Có một mảng , ban đầu mọi phần tử bằng . Bạn cần xử lý các phép cộng tại một vị trí và các truy vấn tổng theo lớp số dư của chỉ số.

  • : thực hiện .
  • : in trên mọi chỉ số thỏa .

Input

  • Dòng đầu chứa . Mỗi trong dòng tiếp theo mô tả một thao tác theo một trong hai dạng trên.

Output

  • Với mỗi thao tác loại , in tổng được yêu cầu.

Constraints

  • .
  • Với loại : và .
  • Với loại : và .
  • Có ít nhất một thao tác loại .
  • Mọi đáp án nằm trong miền số nguyên bit có dấu.

Scoring

  • Subtask ( điểm): .
  • Subtask ( điểm): không có ràng buộc bổ sung.

Example

Test 1

Input

7
1 3 5
1 8 4
1 10 -2
2 5 3
2 4 0
1 8 -1
2 2 0

Output

9
4
1

Giải thích: Các chỉ số đồng dư modulo đang có đóng góp ở và nên tổng là . Chỉ số cho truy vấn modulo cho tổng ; sau khi giảm đi , tổng tại các chỉ số chẵn là .

Lời giải tóm tắt
  • Ý tưởng: Chọn ngưỡng . Khi cập nhật vị trí x, cộng lượng thay đổi vào bảng small[m][x mod m] cho mọi . Truy vấn đọc bảng; truy vấn duyệt các chỉ số cùng số dư, có không quá vị trí.
  • Chứng minh đúng: Sau mỗi cập nhật, small[m][r] bằng tổng mọi a_i có i mod m=r cho mọi m nhỏ, vì đúng ô tương ứng được tăng cùng lượng. Do đó truy vấn nhỏ đúng ngay. Truy vấn lớn liệt kê chính xác mọi chỉ số dương thuộc lớp số dư, không lặp và không bỏ sót, nên tổng cũng đúng.
  • Độ phức tạp: Mỗi cập nhật và truy vấn tốn ; bộ nhớ .