LQDOJ Cup 2025 - Round #2 - Đếm cặp XOR
Xem PDFCho hai dãy số nguyên không âm \(l_1, l_2, \ldots l_n\) và \(r_1, r_2, \ldots, r_n\). Bạn cần xử lý \(q\) truy vấn thuộc một trong ba loại sau:
L u v c: Gán mọi phần tử \(l_u, l_{u + 1}, \ldots, l_v\) bằng giá trị \(c\).R u v c: Gán mọi phần tử \(r_u, r_{u + 1}, \ldots, r_v\) bằng giá trị \(c\).Q u v: Bạn cần giải bài toán đếm sau:- xét các bộ số nguyên không âm \((x, y, i, j)\) thỏa mãn đồng thời các điều kiện:
- \(u \le i < j \le v\)
- \(l_i \leq x \leq r_i\)
- \(l_j \leq y \leq r_j\)
- Gọi \(c_0\) là số bộ \((x, y, i, j)\) thỏa mãn các điều kiện kể trên đồng thời số bit \(1\) trong biểu diễn nhị phân của \(x \oplus y\) là một số chẵn.
- Gọi \(c_1\) là số bộ \((x, y, i, j)\) thỏa mãn các điều kiện kể trên đồng thời số bit \(1\) trong biểu diễn nhị phân của \(x \oplus y\) là một số lẻ.
- Hãy tính \(c_0\) và \(c_1\).
- xét các bộ số nguyên không âm \((x, y, i, j)\) thỏa mãn đồng thời các điều kiện:
Dữ liệu đảm bảo, trong mọi thời điểm, \(l_i \leq r_i\) với mọi \(1 \leq i \leq n\). Hãy xử lý các truy vấn trên.
Nhắc lại, phép toán \(\oplus\) (xor) đối với bit được định nghĩa như sau:
- \(0 \oplus 0 = 0\),
- \(1 \oplus 0 = 1\),
- \(0 \oplus 1 = 1\),
- \(1 \oplus 1 = 0\).
Phép toán \(\oplus\) đối với các số có nhiều hơn một bit được thực hiện theo từng bit. Ví dụ:
- \(2 \oplus 3 = 1\) \((10_2 \oplus 11_2 = 01_2)\),
- \(2 \oplus 5 = 7\) \((010_2 \oplus 101_2 = 111_2)\),
- \(5 \oplus 5 = 0\) \((101_2 \oplus 101_2 = 000_2)\).
Input
- Dòng đầu tiên chứa hai số nguyên \(n\) và \(q\) (\(1 \le n, q \le 3 \cdot 10^5\)).
- Trong \(n\) dòng tiếp theo, dòng thứ \(i\) chứa hai số nguyên \(l_i\) và \(r_i\) (\(0 \le l_i \le r_i < 2^{60}\)), là các giá trị ban đầu của hai dãy.
- \(q\) dòng cuối cùng, mỗi dòng mô tả một truy vấn theo một trong ba định dạng:
L u v cR u v cQ u v
(với \(1 \le u \le v \le n\) và \(0 \le c < 2^{60}\))
Output
Với mỗi truy vấn loại \(3\), in ra trên một dòng hai số nguyên lần lượt là phần dư của \(c_0\) và \(c_1\) khi chia cho \(10^9 + 22071997\).
Scoring
- Subtask \(1\) (\(5\) điểm): \(n, q \le 40\) và trong mọi thời điểm \(0 \le l_i \le r_i \le 90\).
- Subtask \(2\) (\(23\) điểm): \(n, q \le 200\) và trong mọi thời điểm \(0 \le l_i \le r_i \le 7000\).
- Subtask \(3\) (\(17\) điểm): \(n, q \le 500\).
- Subtask \(4\) (\(19\) điểm): Trong mọi thời điểm, \(l_1 = l_2 = \ldots = l_n = 0\) và tồn tại các số nguyên không âm \(e_1, e_2, \ldots e_n\) sao cho \(r_i = 2^{e_i} - 1\) với mọi \(1 \leq i \leq n\).
- Subtask \(5\) (\(19\) điểm): Không có truy vấn loại \(1\) và \(2\).
- Subtask \(6\) (\(17\) điểm): Không có ràng buộc gì thêm.
Example
Test 1
Input
3 3
1 2
3 4
5 6
Q 1 3
R 1 2 4
Q 1 3
Output
4 8
8 12
Note
Ban đầu, ta có:
- \(l_1 = 1\) và \(r_1 = 2\)
- \(l_2 = 3\) và \(r_2 = 4\)
- \(l_3 = 5\) và \(r_3 = 6\)
1. Xử lý truy vấn Q 1 3 lần thứ nhất:
Ta cần xét các cặp chỉ số \((i, j)\) thỏa mãn \(1 \leq i < j \leq 3\). Các cặp đó là \((1, 2), (1, 3), (2, 3)\).
-
- \(1 \oplus 3 = 2\) (số bit \(1\) là \(1\)~-- lẻ)
- \(1 \oplus 4 = 5\) (số bit \(1\) là \(2\)~-- chẵn)
- \(2 \oplus 3 = 1\) (số bit \(1\) là \(1\)~-- lẻ)
- \(2 \oplus 4 = 6\) (số bit \(1\) là \(2\)~-- chẵn)
Với cặp \((i, j) = (1, 2)\): \(x\) có thể là \(1, 2\). \(y\) có thể là \(3, 4\).
Kết quả: 2 chẵn, 2 lẻ. -
Với cặp \((i, j) = (1, 3)\): \(x \in \{1, 2\}\), \(y \in \{5, 6\}\). Đếm tương tự, ta có:
0 chẵn, 4 lẻ. - Với cặp \((i, j) = (2, 3)\): \(x \in \{3, 4\}\), \(y \in \{5, 6\}\). Đếm tương tự, ta có:
2 chẵn, 2 lẻ.
Tổng kết cho truy vấn \texttt{Q 1 3} đầu tiên:
- Tổng số bộ có số bit \(1\) trong biểu diễn nhị phân của \(x \oplus y\) là một số chẵn: \(2 + 0 + 2 = 4\).
- Tổng số bộ có số bit \(1\) trong biểu diễn nhị phân của \(x \oplus y\) là một số lẻ: \(2 + 4 + 2 = 8\).
Kết quả in ra: 4 8
2. Xử lý truy vấn R 1 2 4:
Truy vấn này cập nhật các giá trị \(R_i\) tại các vị trí \(i \in [1, 2]\) thành \(4\). Hai dãy số lúc này trở thành:
- \(l_1 = 1\) và \(r_1 = 4\)
- \(l_2 = 3\) và \(r_2 = 4\)
- \(l_3 = 5\) và \(r_3 = 6\)
3. Xử lý truy vấn Q 1 3 lần thứ hai:
Ta lại xét các cặp chỉ số \((1, 2), (1, 3), (2, 3)\) với các khoảng giá trị mới.
- Với cặp \((i, j) = (1, 2)\): \(x \in \{1, 2, 3, 4\}\), \(y \in \{3, 4\}\). Đếm tương tự như trên, ta có:
4 chẵn, 4 lẻ. - Với cặp \((i, j) = (1, 3)\): \(x \in \{1, 2, 3, 4\}\), \(y \in \{5, 6\}\). Đếm tương tự như trên, ta có:
2 chẵn, 6 lẻ. - Với cặp \((i, j) = (2, 3)\): \(x \in \{3, 4\}\), \(y \in \{5, 6\}\). Đếm tương tự như trên, ta có:
2 chẵn, 2 lẻ.
Tổng kết cho truy vấn Q 1 3 thứ hai:
- Tổng số bộ có số bit \(1\) trong biểu diễn nhị phân của \(x \oplus y\) là một số chẵn: \(4 + 2 + 2 = 8\).
- Tổng số bộ có số bit \(1\) trong biểu diễn nhị phân của \(x \oplus y\) là một số lẻ: \(4 + 6 + 2 = 12\).
Kết quả in ra: 8 12
Kỳ thi:
- LQDOJ Cup 2025 - Round #2 (4 Tháng 10., 2025)
Bình luận