#47. Biến đổi mảng (Mã bài: XORMATCH)

Bộ nhớ: 256 MiB Thời gian: 1000 ms Nhập/xuất từ luồng chuẩn
Kiểu bài: Thông thường Kiểu chấm: So sánh văn bản
Đưa lên bởi: Trùm CUỐI

Đề bài

Cho hai mảng a b gồm n số. Độ tương đồng giữa hai mảng được định nghĩa là số phép toán tối thiểu cần áp dụng để làm cho hai mảng bằng nhau. Nếu không thể làm cho chúng bằng nhau, độ tương đồng là -1 .

Mỗi phép toán cho phép chọn một mảng con có độ dài cố định k , và thay đổi mọi phần tử a_i trong mảng con đó thành a_i \oplus x , với x có thể chọn tùy ý. Ký hiệu \oplus là phép toán XOR bitwise.

Bạn cần tính toán độ tương đồng của hai mảng sau mỗi lần sửa đổi.

Dữ liệu:

  • Dòng đầu tiên chứa ba số n , k q ( 1 \le k \le n \le 2 \cdot 10^5 , 0 \le q \le 2 \cdot 10^5 ) — độ dài của các mảng, độ dài của các mảng con được áp dụng phép toán, và số lượng truy vấn.
  • Dòng thứ hai chứa n số nguyên a_1, a_2, \ldots, a_n ( 0 \le a_i < 2^{14} ) — các phần tử của mảng a .
  • Dòng thứ ba chứa n số nguyên b_1, b_2, \ldots, b_n ( 0 \le b_i < 2^{14} ) — các phần tử của mảng b .
  • Mỗi dòng trong số q dòng tiếp theo mô tả một truy vấn và chứa một kí tự c và hai số nguyên p v ( 1 \le p \le n , 0 \le v < 2^{14} ) — mảng mà truy vấn này thay đổi (a hoặc b), chỉ số của phần tử thay đổi và giá trị mới của nó.

Kết quả:

  • Trên dòng đầu tiên, in ra độ tương đồng ban đầu của các mảng a b .
  • Trên dòng thứ i trong q dòng tiếp theo, in ra độ tương đồng của a b sau khi áp dụng i sửa đổi đầu tiên.

Ví du:

Dữ liệu:

3 3 1
0 4 2
1 2 3
b 2 5

Kết quả:

-1
1

Dữ liệu:

3 2 2
1 3 2
0 0 0
a 1 0
b 1 1

Kết quả:

2
-1
2

Giải thích:

  • Trong ví dụ đầu tiên, không thể làm cho mảng [0, 4, 2] [1, 2, 3] bằng nhau với k=3 . Sau khi sửa đổi, có thể áp dụng phép toán với x=1 cho toàn bộ mảng thứ nhất (vì độ dài của nó bằng k ), và nó sẽ bằng mảng thứ hai.

  • Trong ví dụ thứ hai, để làm cho các mảng bằng nhau trước khi thay đổi, có thể áp dụng phép toán với x=1 trên mảng con [1, 2] của a và với x=2 trên mảng con [2, 3] của b .

  • Sau tất cả các truy vấn, các mảng sẽ là [0, 3, 2] [1, 0, 0] . Các phép toán tương tự làm cho chúng bằng nhau [1, 2, 2] .