Menorah

Đề bài

Mô tả

Có n ngọn nến xếp thành một dãy. Trạng thái ban đầu được mô tả bằng xâu nhị phân a độ dài n: ngọn nến thứ i đang cháy nếu ai=1 và tắt nếu ai=0.

Trong một thao tác, bạn chọn một ngọn nến đang cháy ở vị trí bất kỳ. Sau thao tác đó:

  • Ngọn nến được chọn giữ nguyên trạng thái cháy.
  • Tất cả các ngọn nến còn lại đổi trạng thái (cháy thành tắt và ngược lại).

Cho trạng thái đích được mô tả bằng xâu nhị phân b độ dài n. Hãy tìm số thao tác ít nhất để biến a thành b, hoặc thông báo không thể.

Bài toán gồm nhiều bộ kiểm thử độc lập.

Dữ liệu vào

  • Dòng đầu chứa số nguyên t (1≤t≤104) — số bộ kiểm thử.
  • Với mỗi bộ:
    • Dòng đầu chứa số nguyên n (1≤n≤105) — số ngọn nến.
    • Dòng thứ hai chứa xâu a độ dài n gồm các ký tự 0 và 1.
    • Dòng thứ ba chứa xâu b độ dài n gồm các ký tự 0 và 1.

Tổng n trên tất cả các bộ kiểm thử không vượt quá 105.

Dữ liệu ra

Với mỗi bộ kiểm thử, in ra số thao tác ít nhất để biến a thành b, hoặc −1 nếu không thể.

Ràng buộc

  • 1≤t≤104
  • 1≤n≤105
  • Tổng n không vượt quá 105.

Ví dụ

Input Output Giải thích
5
5
11010
11010
2
01
11
3
000
101
9
100010111
101101100
9
001011011
011010101
0
1
-1
3
4
Bộ 1: hai xâu đã trùng nhau. Bộ 2: chọn ngọn nến thứ 2 (đang cháy) → xâu 01 trở thành 11. Bộ 3: không có ngọn nến nào cháy nên không thể thao tác. Bộ 4: cần tối thiểu 3 thao tác. Bộ 5: cần tối thiểu 4 thao tác.
1
3
110
111
-1 a có 2 ngọn cháy, b có 3 ngọn cháy. Cả hai điều kiện chẵn (ca=cb) và lẻ (ca+cb=n+1) đều không thỏa.

Bình luận

Không có bình luận tại thời điểm này.

gnatmake 12.2.0 a68g 3.1.2 nasm 2.16.1 as_x64 2.47 awk 1.3.4 gcc 16.2.0 dotnet 10.0.402 g++ 16.2.0 g++-themis 16.2.0 g++17 16.2.0 g++20 16.2.0 g++23 16.2.0 clang++ 22.1.8 dmd 2.113.0 dart 3.13.6 gforth 0.7.3 gfortran 15.3.0 go 1.27.3 groovyc 5.1.3 javac 26.0.2.1 node 26.12.1 julia 1.13.2 kotlinc 2.4.21 lean 4.35.0 sbcl 2.2.9 lua 5.5.1 nim 2.2.12 fpc 3.2.2 fpc-themis 3.2.2 perl 5.42.3 php 8.5.12 pike 8.0 swipl 9.0.4 pypy3 7.3.23 python3 3.15.1 racket 8.7 ruby 4.0.8 rustc 1.99.1 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 swiftc 6.4.1 tclsh 8.6 bun 1.4.4 deno 2.9.8 v 0.5.2 zig 0.17.0