Series ℍ𝔾𝔹ℂ𝕡𝕡_'s - 2026 - Contest #2 - Dãy số Teto
Xem PDFTrong một ngày đêm u ám, bị bắt cóc vào khu tự trị nơi tồn tại khu lừa đảo lớn nhất Cam-pu-chia. Sếp bắt cóc anh ta vì thấy anh ấy có tiềm năng để lừa người nên mới bắt .
Bổng dưng, sếp hỏi anh ấy đúng một câu:
Tôi cho bạn một trong 2 lựa chọn: Một là giải bài toán hóc búa này để được thả tự do vì chính sếp cũng chả biết giải (._.). Hai là sẽ giữ lại để làm việc cho hắn và sẽ cho ăn quả chích điện nếu không lừa được \(100\) người mỗi ngày.
Vì không muốn lừa chính người dân của mình nên chọn phương án số \(1\), vì bài toán dưới đây quá khó, mà không AC thì đẩy sang phương án số \(2\) nên đành nhanh trí nhờ sự trợ giúp bên ngoài. Các bạn hãy mau nhanh chóng giúp cậu ấy thoát khỏi ổ lừa đảo nhất quả đất Cam-pu-chia nhé!
Một dãy số (\(x_1,x_2,\ldots,x_m\)) được gọi là Teto nếu với mọi (\(1 \le i \le m-2\)): \(x_i \oplus x_{i+1} < x_{i+1} \oplus x_{i+2}\)
trong đó (\(\oplus\)) là phép \(\text{XOR bit}\).
Mọi dãy có độ dài \(1\) hoặc \(2\) đều là dãy Teto. Cho \(n\) đoạn \([l,r]\) (có thể trùng nhau).
Gọi \(P\) là tập hợp tất cả các số nguyên xuất hiện trong ít nhất một đoạn. Tạo dãy \(A\) gồm các phần tử của \(P\), sắp xếp tăng dần.
Cần đếm số lượng dãy con không rỗng của \(A\) là dãy Teto.
Kết quả lấy \(\text{mod}\) \(998244353\)
Sau đó có \(q\) thao tác động:
1 l r: thêm đoạn \([l,r]\).2 l r: xóa một lần xuất hiện của đoạn \([l,r]\).
Sau trạng thái ban đầu và sau mỗi truy vấn, phải in ra số dãy con Teto hiện tại.
Input
- Dòng đầu chứa hai số nguyên \(n, q\) (\(1\le n\le 10^5\), \(0\le q\le 10^5\)).
- \(n\) dòng tiếp theo, mỗi dòng chứa hai số nguyên \(l_i, r_i\) mô tả một đoạn ban đầu \([l_i,r_i]\) (\(1\le l_i < r_i\le 10^9\)).
- \(q\) dòng tiếp theo mô tả các thao tác. (Lưu ý: Các dữ liệu trong mỗi truy vấn đều thỏa mãn tính hợp lí và yêu cầu đề bài)
Output
- In ra \(q+1\) dòng.
- Dòng đầu tiên là đáp án của trạng thái ban đầu.
- \(q\) tiếp theo là đáp án sau khi thực hiện xong thao tác tương ứng.
Example
Test 1
Input
2 4
6 7
10 10
1 6 7
2 6 7
1 9 9
2 6 7
Output
7
7
7
12
3
Notes
- Ban đầu \(S = \{[6, 7], [10, 10]\}\), nên \(P = \{6, 7, 10\}\) và \(A = [6, 7, 10]\). Mọi dãy con không rỗng của \(A\) đều là dãy Teto, nên đáp án là \(2^3 - 1 = 7\).
- Sau cập nhật
1 6 7, ta thêm đoạn \([6, 7]\) vào \(S\). Khi đó \(S = \{[6, 7], [6, 7], [10, 10]\}\), nhưng \(P\) vẫn là \(\{6, 7, 10\}\), nên \(A\) không đổi. Vì vậy, đáp án vẫn là \(7\). - Sau cập nhật
2 6 7, ta xóa một đoạn \([6, 7]\) khỏi \(S\). Vì trong \(S\) vẫn còn đoạn \([6, 7]\), nên \(P\) và \(A\) vẫn không đổi. Vì vậy, đáp án vẫn là \(7\). - Sau cập nhật
1 9 9, ta thêm đoạn \([9, 9]\) vào \(S\). Khi đó \(P = \{6, 7, 9, 10\}\) và \(A = [6, 7, 9, 10]\). - Có tất cả \(15\) dãy con không rỗng của \(A\). Trong đó, đúng \(3\) dãy không phải là dãy Teto: \([6, 9, 10]\) vì \(6 \oplus 9 = 15\) và \(9 \oplus 10 = 3\); \([7, 9, 10]\) vì \(7 \oplus 9 = 14\) và \(9 \oplus 10 = 3\); và \([6, 7, 9, 10]\) vì \(7 \oplus 9 = 14\) và \(9 \oplus 10 = 3\). Vậy đáp án là \(15 - 3 = 12\).
- Sau cập nhật
2 6 7, đoạn \([6, 7]\) còn lại bị xóa khỏi \(S\). Khi đó \(P = \{9, 10\}\) và \(A = [9, 10]\). Có đúng \(3\) dãy con Teto là \([9]\), \([10]\), và \([9, 10]\).
Test 2
Input
3 3
10 12
15 15
100 101
1 12 13
1 14 14
2 10 12
Output
39
60
84
39
Kỳ thi:
- Series ℍ𝔾𝔹ℂ𝕡𝕡_'s - Tìm 𝓒𝓸𝓭𝓮𝓻 Tài năng nhất LQDOJ #02 (13 Tháng sáu, 2026)
Bình luận (1)