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.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