BOJ 21099 - Four XOR

image.png

30분동안 낚인 문제

nn이 충분히 크다면 AiA_i를 비둘기집의 원리에 의해 어떤 수로 구성하든 00이 항상 만들어진다는 것이 핵심이다.

AxAyAzAwA_x \oplus A_y \ne A_z \oplus A_w 가 되기 위해선, AxAyA_x \oplus A_y 의 가지수를 생각해보자.

모든 수가 다르므로 대략 O(n2)O(n^2) 가지이다.

AxA_x 가 가만히 있고 AyA_y 의 후보들에 대해서 AxAy=AxAyA_x \oplus A_{y'} = A_x \oplus A_y 가 나올 순 없다. 또한, 그렇다고 AxA_x를 바꿔서 AxAy=AxAyA_{x'} \oplus A_{y'} = A_x \oplus A_y 가 나오게 하면 애초에 44가지의 수로 00을 만들어버리는 경우이므로 피해져야 한다.

그런데 AzAwA_z \oplus A_w 는 모두 이 수와 달라야 하는데 이것도 O(n2)O(n^2) 인데, 그럼 결국 O(n(n+1)2)<100,0002O \left( \dfrac {n(n+1)}2 \right) < \dfrac {100,000}2 가 되야 한다는 의미이다.

실제로 n>350n > 350 에 대해 그냥 Yes를 출력하는 코드가 통과했다.

적절한 nn을 설정하여 그 위는 항상 Yes 이고, 그 밑은 완전탐색을 해줄 수 있다.

Tags:

Categories:

Updated:

Comments