canuc80k6314·15/32

Mốc Đủ Dữ Kiện

Nộp bài trên LQDOJ

Bài 6.4 · Gaussian Elimination

Có đại lượng chưa biết , mỗi đại lượng là một bit. phép đo được nhận theo thứ tự. Một phép đo cho biết XOR của một tập đại lượng: chuỗi nhị phân chỉ vị trí nào tham gia, còn bit cuối dòng là kết quả XOR.

Dữ liệu được bảo đảm nhất quán. Hãy tìm số phép đo ít nhất ở đầu dãy đủ để xác định duy nhất toàn bộ bit. Sau đó in giá trị của từng bit bằng các nhãn quy ước bên dưới.

Input

  • Dòng đầu chứa hai số nguyên .
  • Dòng thứ trong dòng tiếp theo chứa một chuỗi độ dài và một bit . Phép đo tương ứng là XOR của mọi có s_i_{j} = 1, và kết quả bằng .

Output

  • Nếu ngay cả toàn bộ phép đo vẫn không xác định duy nhất các bit, in:
  • Cannot Determine
  • Ngược lại, in số nguyên nhỏ nhất sao cho phép đo đầu tiên đã đủ. Sau đó in dòng theo thứ tự :

  • in ?y7M# khi bit bằng ;

  • in Earth khi bit bằng .

Constraints

  • .
  • .
  • Mỗi chuỗi có đúng ký tự hoặc .
  • Mỗi bằng hoặc .
  • Tất cả phép đo trong input nhất quán với ít nhất một vector bit.

Scoring

  • Subtask ( số điểm): .
  • Subtask ( số điểm): Không có giới hạn bổ sung.

Example

Test 1

Input

3 4
110 1
011 1
101 0
001 1

Output

4
?y7M#
Earth
?y7M#

Giải thích: Ba phép đo đầu chỉ có hạng ; phép đo thứ làm hạng đạt và xác định duy nhất vector .

Lời giải tóm tắt
  • Ý tưởng: Duy trì một hàng cơ sở cho mỗi vị trí pivot trên GF(2). Khi đọc phương trình mới, quét các cột từ trái sang phải. Nếu đã có hàng pivot tại cột đang bật, XOR hàng đó khỏi phương trình. Nếu gặp cột bật chưa có pivot, lưu phương trình làm hàng cơ sở mới và tăng hạng.
  • Ý tưởng: Bất biến là các hàng cơ sở độc lập và sinh đúng không gian của mọi phép đo đã đọc. Vì dữ liệu nhất quán, prefix xác định duy nhất N ẩn đúng khi hạng đạt N; thời điểm đầu tiên đạt hạng đó chính là K nhỏ nhất. Khi đủ pivot, thế ngược từ cột N-1 về 0 để lấy nghiệm.
  • Ý tưởng: Độ phức tạp O(MN^2/word_size), bộ nhớ O(N^2/word_size).