BOJ 5009 - 유치원

image.png

2-SAT 문제이다.

일단 노드 번호는 다음과 같다.

  • 6k+06k+0 kk번 학생이 00번 반 배정
  • 6k+16k+1 kk번 학생이 00번 반 배정 X
  • 6k+26k+2 kk번 학생이 11번 반 배정
  • 6k+36k+3 kk번 학생이 11번 반 배정 X
  • 6k+46k+4 kk번 학생이 22번 반 배정
  • 6k+56k+5 kk번 학생이 22번 반 배정 X

이전 반에 들어가면 안되므로

이전 반에 안들어가게 절을 하나 만들어준다.

그리고 남은 두반은 \oplus로 절을 만들어준다.

이제 이분탐색으로 찾는데, mm번 초과의 순서를 가진 친구들과 같은 반이 안되게끔 해야한다.

¬(x0y0)¬(x1y1)¬(x2y2) \lnot(x_0 \land y_0) \land \lnot(x_1 \land y_1) \land \lnot(x_2 \land y_2)

를 드모르간 법칙으로 풀면 CNF가 나와서 그대로 써주면 된다.

Tags:

Categories:

Updated:

Comments