Cơn Ác Mộng Euclid

Đề bài

Mô tả

Cho một tập S gồm n vectơ trên trường 2 với m chiều. Mỗi vectơ có m tọa độ, mỗi tọa độ bằng 0 hoặc 1. Phép cộng hai vectơ u+v=w được định nghĩa wi=(ui+vi)mod2.

Bạn được cộng tùy ý một tập con của S (kể cả tập rỗng — kết quả là vectơ 0). Gọi T là tập tất cả các vectơ có thể tạo được bằng cách cộng một tập con nào đó của S.

Mỗi vectơ trong Skhông quá 2 tọa độ bằng 1.

Hãy tính:

  1. |T| theo modulo 109+7.
  2. Một tập con SSkích thước nhỏ nhất sao cho mọi vectơ trong T vẫn có thể tạo được bằng cách cộng các vectơ trong S.

Nếu có nhiều tập S kích thước nhỏ nhất, hãy chọn tập có dãy chỉ số nhỏ nhất theo thứ tự từ điển. So sánh hai tập có cùng kích thước: viết các chỉ số phần tử theo thứ tự tăng dần thành dãy a1<a2<b1<b2<; A nhỏ hơn B về thứ tự từ điển nếu tồn tại i sao cho aj=bj với mọi j<iai<bi.

Dữ liệu vào

  • Dòng đầu tiên chứa hai số nguyên n, m.
  • n dòng tiếp theo mô tả các vectơ. Mỗi dòng bắt đầu bằng số nguyên k (1k2), tiếp theo là k số nguyên phân biệt x1,,xk (1xim), biểu diễn vectơ có giá trị 1 tại các tọa độ x1,,xk0 ở các vị trí còn lại.

Không có hai vectơ nào trong S trùng nhau.

Dữ liệu ra

  • Dòng đầu tiên in hai số: |T|mod(109+7)|S|.
  • Dòng thứ hai in |S| chỉ số của các phần tử trong S theo thứ tự tăng dần (đánh số từ 1 theo thứ tự đầu vào).

Ràng buộc

  • 1n,m5·105.
  • 1k2.
  • 1xim.

Ví dụ

Input Output Giải thích
3 2
1 1
1 2
2 2 1
4 2
1 2
Ba vectơ là 10, 01, 11. Vì 11=10+01, vectơ thứ ba phụ thuộc vào hai vectơ đầu. Không gian sinh có 4 phần tử. Chọn S={1,2} — kích thước tối thiểu, thứ tự từ điển nhỏ nhất.
2 3
2 1 3
2 1 2
4 2
1 2
Hai vectơ 101110 đều độc lập, sinh ra không gian 4 phần tử.
3 5
2 1 2
1 3
1 4
8 3
1 2 3
Ba vectơ độc lập, sinh ra không gian 23=8 phần tử. Chỉ số S={1,2,3}.

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.400 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.2 gforth 0.7.3 gfortran 12.2.0 go 1.27.0 groovyc 5.1.1 javac 25.0.4 node 26.8.1 julia 1.12.7 kotlinc 2.4.10 lean 4.33.1 sbcl 2.2.9 lua 5.4.9 nim 2.2.10 fpc 3.2.2 fpc-themis 3.2.2 perl 5.36.0 php 8.5.10 pike 8.0 swipl 9.0.4 pypy3 7.3.23 python3 3.14.7 racket 8.7 ruby 4.0.6 rustc 1.98.0 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 swiftc 6.3.3 tclsh 8.6 bun 1.4.0 deno 2.9.6 v 0.5.2 zig 0.16.0