해설
과 은 어떤 연산으로도 바뀌지 않는다. 따라서 과 이 필요하다.
인접 XOR 배열 를 ()로 정의하자. 위치 에 연산을 수행하면 만 바뀌고, 과 만 영향을 받는다. 계산하면 두 값이 서로 바뀌고 나머지 원소는 변하지 않는다.
즉 한 번의 연산은 인접 XOR 배열에서 서로 이웃한 두 원소를 swap하는 것과 같다. 이웃한 두 원소의 swap을 원하는 만큼 할 수 있으므로 인접 XOR 배열의 원소들은 임의의 순서로 재배열될 수 있다.
반대로 이 정해져 있으면 인접 XOR 배열은 전체 배열을 유일하게 결정한다. 따라서 를 로 만들 수 있는 필요충분조건은 다음과 같다.
- .
- .
- ()들의 멀티셋과 ()들의 멀티셋이 같다.
각 테스트 케이스마다 두 인접 XOR 배열을 만든 뒤 정렬하여 비교하면 된다. 전체 시간 복잡도는 이고, 전체 메모리 복잡도는 이다.
Solution written by GPT5.5