trang chủ / bài tập / playword

Trò Chơi Ghép Xâu Nhị Phân

Đề bài

Mô tả

Cho n xâu nhị phân khác nhau từng đôi một. Xét trò chơi xếp các xâu thành một dãy sao cho ký tự đầu tiên của mỗi xâu (kể từ xâu thứ hai) trùng với ký tự cuối cùng của xâu liền trước. Xâu đầu tiên trong dãy có thể là bất kỳ xâu nào.

Bạn được phép đảo ngược một số xâu trong tập (đảo ngược một xâu là viết các ký tự theo thứ tự ngược lại, ví dụ 01111110). Sau khi đảo ngược, tập n xâu vẫn phải gồm các xâu khác nhau từng đôi một, và phải tồn tại một cách sắp xếp toàn bộ n xâu thoả mãn luật chơi ở trên.

Hãy xác định số lượng xâu cần đảo ngược là ít nhất và chỉ ra một tập chỉ số các xâu được chọn để đảo ngược. Nếu không có cách nào, in 1.

Dữ liệu vào

  • Dòng đầu chứa t — số bộ dữ liệu (1t104).
  • Với mỗi bộ:
    • Dòng đầu chứa n — số xâu (1n2·105).
    • n dòng tiếp theo, mỗi dòng là một xâu nhị phân không rỗng, chỉ gồm các ký tự 01. Các xâu trong cùng một bộ là khác nhau từng đôi một.

Tổng n trên toàn bộ các bộ dữ liệu không vượt quá 2·105. Tổng độ dài các xâu trên toàn bộ các bộ dữ liệu không vượt quá 4·106.

Dữ liệu ra

Với mỗi bộ, in ra:

  • 1 nếu không thể thực hiện được.
  • Ngược lại, dòng đầu in k — số xâu cần đảo ngược ít nhất (0kn). Dòng thứ hai in k chỉ số khác nhau của các xâu cần đảo ngược (đánh số từ 1 theo thứ tự xuất hiện trong dữ liệu vào). Nếu k=0 có thể bỏ trống dòng thứ hai. Nếu có nhiều đáp án, in bất kỳ đáp án nào.

Ràng buộc

  • 1t104
  • 1n2·105
  • Tổng n không vượt quá 2·105.
  • Tổng độ dài các xâu không vượt quá 4·106.

Ví dụ

Input Output Giải thích
4
4
0001
1000
0011
0111
3
010
101
0
2
00000
00001
4
01
001
0001
00001
1
3
-1
0

2
1 2
Bộ 1: đảo xâu thứ 3 (00111100), một thứ tự hợp lệ là 1000,0001,1100,0111. Bộ 2: không thể (chú ý 010 ngược lại là 010, 101 ngược lại là 101, 0 không đổi — không có cách nào ghép thành chuỗi). Bộ 3: đã sẵn sàng, ví dụ 00000,00001. Bộ 4: đảo hai xâu đầu (0110001100), một thứ tự hợp lệ là 00001,10,0001,100.

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.46 awk 1.3.4 gcc 16.1.0 csc 6.12.0.200 g++ 16.1.0 g++-themis 16.1.0 g++17 16.1.0 g++20 16.1.0 g++23 16.1.0 clang++ 22.1.6 dmd 2.112.0 dart 3.12.1 gforth 0.7.3 gfortran 12.2.0 go 1.26.3 groovyc 5.0.6 javac 25.0.3 node 26.2.0 kotlinc 2.3.21 sbcl 2.2.9 lua 5.4.8 nim 2.2.10 fpc 3.2.2 fpc-themis 3.2.2 perl 5.36.0 php 8.5.6 pike 8.0 pypy3 7.3.23 python3 3.14.5 racket 8.7 ruby 4.0.5 rustc 1.96.0 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 tclsh 8.6 bun 1.3.14 deno 2.8.1 v 0.5.1 zig 0.16.0