아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

보간

시간 제한4초메모리 제한256 MB

요약
서로 다른 m개의 불리언 입력 벡터와 출력이 주어질 때, 모든 값을 만족하는 최대 9000개 항의 Zhegalkin 다항식(XOR-of-AND)을 구성하거나 해가 없으면 -1을 출력한다.
난이도

어려움10점 중 9점

유형
수학, 비트 연산, 그리디, 완전 탐색
정답자
아직 제출이 없습니다

문제

제갈킨 다항식(Zhegalkin polynomial)은 다음과 같이 표현되는 불리언 함수 f(x1,…,xn)f(x_1,\dots,x_n)이다.

[f(x_{1},\dots,x_{n}) = \bigoplus_{S \subseteq {1, 2, \ldots, n}} a_S \cdot \bigwedge_{i \in S} x_i,]

여기서 ⊕\oplus와 ∧\wedge는 각각 XOR과 AND 불리언 연산을 나타내며, XOR은 모든 변수 부분집합에 대해 취해지고, {1,2,…,n}\{1, 2, \ldots, n\}의 각 부분집합 SS에 대해 aS∈{0,1}a_S \in \{0, 1\}이다.

이 문제에서는 mm개의 변수 값 집합 (vi1,…,vin)({v_i}_{1},\dots,{v_i}_{n})과 mm개의 불리언 값 yi∈{0,1}y_i \in \{0, 1\}이 주어진다. 각 i=1,2,…,mi = 1, 2, \ldots, m에 대해 f(vi1,…,vin)=yif({v_i}_{1},\dots,{v_i}_{n}) = y_i를 만족하는, 0이 아닌 항이 최대 90009000개인 제갈킨 다항식을 구성해야 한다.

입력

첫째 줄에 두 정수 nn과 mm이 주어진다. 이는 변수의 개수와 주어지는 변수 값의 개수이다 (1≤n,m≤20001 \leq n, m \leq 2000).

다음 mm개의 줄 각각에는 ii번째 변수 값 집합을 나타내는 길이 nn의 문자열(00 또는 11)과 정수 yiy_i가 주어진다.

모든 변수 값 집합은 서로 다르며, 적어도 하나의 집합에 대해 yi=1y_i=1임이 보장된다.

출력

다항식은 aS=1a_S = 1인 항을 최대 90009000개 포함해야 한다. 그러한 각 항에 대해, 대응하는 변수 부분집합 SS를 길이 nn의 문자열(00 또는 11)로 출력한다. ii번째 문자가 11이면 i∈Si \in S이고, 00이면 i∉Si \notin S이다. 항은 임의의 순서로 출력해도 되지만, 중복된 부분집합이 있어서는 안 된다.

가능한 답이 여러 개라면 그중 아무거나 출력한다. 해가 존재하지 않으면 −1-1을 출력한다.

해가 존재한다면, aS=1a_S = 1인 항 SS가 최대 90009000개인 해도 존재함이 보장된다.

힌트

첫 번째 예제의 가능한 답 중 하나는 f(x1,x2)=1f(x_1,x_2)=1이다.

두 번째 예제에서 f(x1,x2,x3)=x1⊕x2⊕x3f(x_1,x_2,x_3)=x_1\oplus x_2\oplus x_3는 가능한 답 중 하나이다.

예제2

  1. 예제 1

    입력
    2 3
    01 1
    10 1
    11 1
    
    예상 출력
    00
    
  2. 예제 2

    입력
    3 2
    000 0
    111 1
    
    예상 출력
    100
    010
    001