BOJ 21099 - Four XOR

30분동안 낚인 문제
n이 충분히 크다면 Ai를 비둘기집의 원리에 의해 어떤 수로 구성하든 0이 항상 만들어진다는 것이 핵심이다.
Ax⊕Ay=Az⊕Aw 가 되기 위해선, Ax⊕Ay 의 가지수를 생각해보자.
모든 수가 다르므로 대략 O(n2) 가지이다.
Ax 가 가만히 있고 Ay 의 후보들에 대해서 Ax⊕Ay′=Ax⊕Ay 가 나올 순 없다. 또한, 그렇다고 Ax를 바꿔서 Ax′⊕Ay′=Ax⊕Ay 가 나오게 하면 애초에 4가지의 수로 0을 만들어버리는 경우이므로 피해져야 한다.
그런데 Az⊕Aw 는 모두 이 수와 달라야 하는데 이것도 O(n2) 인데, 그럼 결국 O(2n(n+1))<2100,000 가 되야 한다는 의미이다.
실제로 n>350 에 대해 그냥 Yes
를 출력하는 코드가 통과했다.
적절한 n을 설정하여 그 위는 항상 Yes
이고, 그 밑은 완전탐색을 해줄 수 있다.
Comments