BOJ 26973 - Circular Barn

직접 N−position인지를 검사해보면 n≡0(mod4) 가 아닐 때 항상 이긴다는 것을 알 수 있다.
이는 소수중에 4의 배수가 없고 1,2,3 은 항상 지울 수 있다는 것에서 유도된다.
하지만 그냥 직접 몇개를 돌려봐도 바로 알 수 있다.
Nhoj
가 이길 수 있는 수를 생각해본다.
어떤 수 x가 4∣x라면 가장 느리게 끝나게 만드는 횟수, 4∤x라면 가장 빠르게 끝나게 횟수를 f(x)라 하자. 예를 들어, f(1)=1, f(4)=2, f(p)=1 (p∈소수) 이다.
John은 4∤ai 인 i들에 대해 빠르게 게임을 끝내길 원할 것이고, 4∣ai인 i들에 대해 최대한 느리게 게임을 끝내길 원할 것이다.
4∣x 라면 f(x)는 짝수이고 4∤x라면 f(x)는 홀수이다.
Nhoj가 이기기 위한 전략을 보자.
ai≡0(mod4) 이고 Minj=0i−1f(aj)>f(ai)+2 AND Minj=i+1n−1f(aj)>f(ai) 여야 한다.
여기서 j는 4∤aj 인 j들이다.
f(x)만 적절히 전처리하면 문제가 해결된다.
4∤x 일 때 가장 빨리 끝내는 방법은 p≤x인 소수나 1인 p중에 p≡x(mod4)인 가장 큰 p를 고르는 것이다.
그래야 x−p≡0(mod4) 가 되고 상대방에게 4의 배수를 줄 수 있다.
4∣x 일 때 가장 느리게 방법은 사실 p=2 인 경우이다. 왜냐면 p 중 짝수인건 2밖에 없고 그럼 상대방도 어쩔수 없이 나에게 다시 4의 배수를 주기 위해 2만 뺄 것이기 때문이다.
USACO 정해에선 귀납적으로 x≡0(mod2) 인 경우엔 f(x)=2x 라고 설명한다.
Comments