당신은 15 개 수의 세포와 빈 셀로 구성된 4 × 4 격자를, 주어진다.
모든 수치는 고유하고 (15) (1)로부터 원거리
빈 셀에 이동할 수있는 빈 셀과 인접 셀이 보드.
당신의 작업은 아래 그림과 같이 대상 그리드에 입력 그리드를 만드는 것입니다.
다음의 예 (샘플 입력)에서는 두 개의 이동에서 대상 그리드를 얻을 수 있습니다.
모든 수치는 고유하고 (15) (1)로부터 원거리
빈 셀에 이동할 수있는 빈 셀과 인접 셀이 보드.
당신의 작업은 아래 그림과 같이 대상 그리드에 입력 그리드를 만드는 것입니다.
다음의 예 (샘플 입력)에서는 두 개의 이동에서 대상 그리드를 얻을 수 있습니다.
제 InputThe 라인 테스트 케이스의 수를 나타내는 정수 T (1 <= T <= 10 ^ 5)을 포함한다.
각 시험은 각각 네 줄, 네 개의 공간 분리 된 정수를 포함하는 입력을 나타내는 격자로 구성된다. 0 당신이 한 줄에 답을 인쇄 할 수 있고, 빈 cell.OutputFor 각 테스트 케이스를 나타냅니다.
당신은 120 개 이동에서 대상 그리드를 얻을 수없는 경우 '없음', 다른 인쇄 'Yes'.Sample 입력 인쇄
2 1 2 3 4 5 6 7 8 9 10 0 12 13 14 11 15 1 2 3 4 5 6 7 8 9 10 11 12 13 15 14 0
샘플 출력
예 아니오
질문의 의미 : 잘 이해한다
분석은 두 개의 디지털 게임 상황에 홀수 때까지 때만 N-1 번 요소 (공간 상관없이) 기록 라인 수열 * N의 두 가지 상황에서 그리드 역방향 번호의 숫자 동일한 홀수. 결론은 또한 확장 될 수 있습니다
n은 짝수이고, 최대 두 상황 경우에만, 기입 순서 때 역방향 수의 차이 두 공간 상황 여기서 동일한 패리티 행의 수 사이의 차이. 요약하면, N * m의 디지털 풀수 문제 판정에서, 역방향의 정렬이 해결하고자 병합로 전환시킬 수있다.
AC 코드 :
1 #INCLUDE <iostream> 2 #INCLUDE <CString을> 3 #INCLUDE <cstdio> 4 #INCLUDE <알고리즘> 5 이용 스페이스 성병; 6 CONST의 INT maxn 1E5 + = 10 ; 7 #DEFINE LL 긴 긴 8 #DEFINE INF 0x3f3f3f3f 9 INT의 T, N; 10 INT A [ 20 ]; 11 (12) INT 의 main () { 13 는 scanf ( " %의 D ' , T); 14 일 동안 (T--) { 15 INT의 입술, ANS = 0 ; (16) 에 대한이 ( int로 I = 1 ; i가 <= 16 ; I ++ ) { 17 는 scanf ( " %의 D " , & A [I]); 18 의 경우 입술 = 입 / (a [i]를!) 4 + (I % 4 ? 1 : 0 ); 19 다른 { 20 대 ( INT의 J = 1 ; J <I, J ++ ) { 21 의 경우 (a [J]!) 계속 ; (22) 다른 경우 (a [J]>은 [I]) ANS ++ ; 23 } 24 } 25 } 26 의 경우 (( 4 -res) % 2 == ANS % 2 )의 printf ( " 예 \ n을 " ); (27) 다른 사람의 의 printf ( " 없음 \ n을 " ); 28 } 29 30 31 복귀 0 ; 32 }