ĐẾM DÃY SỐ

Cho 3 số nguyên \(n,k,m\) và m bộ ba số: \(\left( l_{1},\ r_{1},x_{1} \right);\left( l_{2},r_{2},x_{2} \right);\ldots.(l_{m},r_{m},x_{m})\).

Yêu cầu của bài toán: Đếm số lượng dãy số \((a_{n})\) gồm n phần tử thỏa mãn tất cả các điều kiện sau:

  • \(0 \leq a\lbrack i\rbrack < 2^{k}\ (1 \leq i \leq n)\)

  • \(a\left\lbrack l_{i} \right\rbrack\ AND\ a\left\lbrack l_{i} + 1 \right\rbrack AND\ldots.AND\ a\left\lbrack r_{i} \right\rbrack = x_{i}\ (1 \leq i \leq m)\) (với AND là phép toán thao tác bit, trong C++ ta viết là &)

Hai dãy số \(\left( a_{n} \right) = \left\{ a_{1},a_{2},\ldots,a_{n} \right\}\)\(\left( b_{n} \right) = \left\{ b_{1},b_{2},\ldots,b_{n} \right\}\) gọi là khác nhau nếu tồn tại chỉ số \(i\) thỏa mãn: \(a_{i}
eq b_{i}(1 \leq i \leq n)\)

Dữ liệu vào:

  • Dòng đầu tiên gồm 3 số nguyên \(n,k,m\)

  • \(m\) dòng tiếp theo, mỗi dòng gồm 3 số \(l_{i},\ r_{i},\ x_{i}(1 \leq l_{i} \leq r_{i} \leq n;0 \leq x_{i} < 2^{k})\)

Kết quả: ghi số lượng dãy số \((a_{n})\) thỏa mãn điều kiện của bài toán, chia lấy dư cho 998244353.

Input Output Input Output
4 3 2
1 3 3
3 4 6
3 5 2 3
1 3 2
2 5 0
3 3 3
33

Chú ý:

  • Trong tất cả các test: \(1 \leq n \leq 5 \times 10^{5};1 \leq k \leq 30;0 \leq m \leq 5 \times 10^{5}\)

  • 20% số điểm ứng với: \(x_{i} = 2^{k} - 1\ (1 \leq i \leq m)\)

  • 30% số điểm ứng với: \(n,m,k \leq 18\)

  • 20% số điểm ứng với : \(n \leq 1000\)

  • 30% số điểm không có điều kiện gì thêm

Bạn cần đăng nhập để nộp bài

hpcode.edu.vn
Code tích cực
Trong 24h
  1. npk1605 (5/10)
  2. hungeazy08 (4/26)
  3. tung (2/5)
Trong 7 ngày
  1. nguyenanhvu (40/64)
  2. khieuquan (35/59)
  3. ngokhang (27/55)
Trong 30 ngày
  1. quechi (85/105)
  2. dangphong3108 (79/125)
  3. kiennhientv (79/179)
Thống kê
AC/Sub: 97887/180710
Pascal: 17121
C++: 130348
Python: 33199
Lượt xem/tải tests: 38905

Lưu Hải Phong - 2020
[email protected]