BOJ 12975 트라이슬

BOJ 12975 트라이슬

문제 링크:

문제 내용

생략

문제 풀이

스포일러

세 개의 팀 중 하나에 다음 학생을 넣는 것을 반복하는 DP를 생각합니다. 0 이상 255 이하의 정수들의 XOR은 동일한 범위 내에 있으며 각 팀에 적어도 한 명의 학생이 들어갔는지 여부를 추가로 관리해야 하므로, 256323N256^3 \cdot 2^3 \cdot N의 상태 공간을 갖는 DP를 세울 수 있습니다. 전이할 때는 힘이 xx인 학생에 대해 팀 1, 팀 2, 팀 3 중 하나에 xx를 XOR하고 그 팀에 학생이 존재함을 나타내는 비트를 켜주면 됩니다.

여기서 다음의 최적화 중 적어도 하나를 하면 통과합니다.

  • 세 개의 팀 중 비어있는 팀이 있을 경우, 그 팀의 힘은 현재 0입니다. 학생이 있는 다른 팀에서 힘이 xx인 아무 학생을 빼서 비어있는 팀에 옮기면, 기존 팀의 힘은 xx를 XOR하게 되고 새로운 팀의 힘은 xx가 되므로, 팀의 힘의 총합은 절대로 손해를 보지 않습니다. 따라서 각 팀에 학생이 존재하는지 여부 체크를 생략할 수 있습니다.
  • 1번부터 ii번 학생까지 처리했다고 하면, 이 ii명의 전체 XOR는 고정이므로 팀 1과 팀 2의 힘을 알면 팀 3의 힘이 고정됩니다. 따라서 2563256^3에서 차원을 하나 줄일 수 있습니다.
Last updated on