Các lượt nộp
    Danh sách bài
    Trang chủ
    Báo lỗi

    solution

    Đề bài: [Toán rời rạc] Đếm phép gán thỏa CNF

    Một công thức ở dạng chuẩn hội (CNF) là hội (AND) của nhiều mệnh đề (clause), mỗi mệnh đề là tuyển (OR) của các literal. Mỗi literal là một biến xix_ixi​ hoặc phủ định ¬xi\lnot x_i¬xi​.

    Một phép gán giá trị cho nnn biến thỏa công thức nếu mọi mệnh đề đều đúng (mỗi mệnh đề có ít nhất một literal đúng).

    Cho nnn biến và mmm mệnh đề, hãy đếm số phép gán 0/10/10/1 cho các biến làm công thức đúng.

    Quy ước literal: số nguyên khác 000; giá trị dương iii nghĩa là xix_ixi​, giá trị âm −i-i−i nghĩa là ¬xi\lnot x_i¬xi​ (biến đánh số 1..n1..n1..n).

    Ví dụ: n=2n=2n=2, mệnh đề 1 2 (x1∨x2x_1 \lor x_2x1​∨x2​): có 3 phép gán thỏa trong 4.

    • Định dạng đầu vào:

      Dòng 1: nnn và mmm. mmm dòng tiếp theo: mỗi dòng liệt kê các literal (số nguyên khác 0) của một mệnh đề.

    • Ràng buộc đầu vào:

      1≤n≤201 \le n \le 201≤n≤20, 1≤m≤1001 \le m \le 1001≤m≤100, mỗi mệnh đề có ≤n\le n≤n literal.

    • Định dạng đầu ra:

      Một dòng: số phép gán thỏa công thức.

    Ví dụ:

    Đầu vào:

    2 1
    1 2

    Đầu ra:

    3

    Giải thích:

    $x_1\lor x_2$ đúng trừ khi $x_1=x_2=0$, nên 3 trong 4 phép gán thỏa.

    Đang tải editor...