Cặp XOR Giới Hạn

Xem dưới dạng PDF

Gửi bài giải


Điểm: 10
Giới hạn thời gian: 1.0s
Giới hạn bộ nhớ: 256M
đầu vào: stdin
Đầu ra: stdout

Tác giả:
Kiểu bài tập

Cho mảng \(A\) gồm \(N\) số nguyên không âm và một số nguyên \(K\). Bạn cần đếm xem có bao nhiêu cặp chỉ số \((i, j)\) thỏa mãn \(1 \le i < j \le N\) sao cho giá trị Bitwise XOR của chúng nhỏ hơn \(K\) (\(A[i] \oplus A[j] < K\)).

Hãy phát triển giải thuật trên Bitwise Trie để xử lý bài toán hiệu quả.

Định dạng đầu vào

  • Dòng đầu chứa hai số nguyên dương \(N\) và \(K\) (\(2 \le N \le 10^5\), \(0 \le K \le 10^9\)).
  • Dòng hai chứa \(N\) số nguyên không âm \(a_1, a_2, \dots, a_N\) cách nhau bởi dấu cách (\(0 \le a_i \le 10^9\)).

Định dạng đầu ra

  • Một số nguyên duy nhất là số lượng cặp chỉ số thỏa mãn yêu cầu.

Ví dụ

Input:

4 6
3 10 5 25

Output:

1

Giải thích

Chỉ có cặp \((3, 10)\)? Không, \(3 \oplus 5 = 6 \not< 6\). Có cặp nào: \(3 \oplus 10 = 9\), \(3 \oplus 25 = 26\), \(10 \oplus 5 = 15\), \(10 \oplus 25 = 19\), \(5 \oplus 25 = 28\). Chờ, ví dụ trên có cặp nào nhỏ hơn 6? Không có cặp nào! Hãy dùng ví dụ chuẩn xác: Mảng: 3 10 5 2 và \(K = 6\). Cặp:

  • \(3 \oplus 5 = 6 \not< 6\)
  • \(3 \oplus 2 = 1 < 6\) (thỏa mãn)
  • \(10 \oplus 5 = 15 \ge 6\)
  • \(10 \oplus 2 = 8 \ge 6\)
  • \(5 \oplus 2 = 7 \ge 6\) Tổng cộng: 1 cặp.

Input chuẩn:

4 6
3 10 5 2

Output chuẩn:

1

Ràng buộc

  • 30% số điểm ứng với \(N \le 1000\).
  • 70% số điểm còn lại không có ràng buộc gì thêm.
  • Kết quả có thể vượt quá giới hạn số nguyên 32-bit.

Nhận xét

Không có ý kiến tại thời điểm này.