U E D R , A S I H C RSS

gusul/김태진

구슬/gusul

  • ë§�í�¬
  • ë‘�명ì�˜ 선수가 최선ì�„ 다할 때, 누가 해당 경기ì—�서 ì�´ê¸°ëŠ”ì§€ì—� 대한 문제
  • Dynamic Programming
    • ë‚´ 1ë…„ê°„ì�˜ 숙ì›�ì�˜ 문제를 풀었다. -김태진
  • 문제를 단순화하여, 앞으로 홀수번 시행ì�´ 최ì �ì�¸ 경우, 지금 하는 사람ì�´ 승리하게 ë�œë‹¤. ì�´ë¥¼ ì�´ìš©í•˜ì—¬ n-1번째 시행ì—�서(지는 시ì �ì�„ 첫번째로 하여 거꾸로 올ë�¼ê°„다.) n번째로 올 때 모ë‘� 홀수ì�¸ 경우ì—�ë§Œ 해당 시ì �ì�˜ 사람ì�´ 지게ë�˜ëŠ”ë�° (1,3,5번ì—�서 7번으로 ê°ˆ 수 있는ë�° 1,3,5번ì�˜ 시행횟수가 모ë‘� 홀수개) 하나ë�¼ë�„ ì§�수ì—�서 오는 경우가 있으면 ê·¸ 경우가 ìƒ�대방ì�´ 무조건 지는 경우ì�´ë¯€ë¡œ 최선ì�´ë‹¤.

  • 즉, ì§�수번째 시행ìž�ê°€ 무조건 진다고 본다.(ì �í™”ì‹�)
  • n-1번째가 모ë‘� 홀수ì�´ë©´ ìž�ì‹ ì�˜ 차례 n번째는 ì§�수여서 지게ë�œë‹¤.
  • n-1번째ì—� 하나ë�¼ë�„ ì§�수 경우가 있으면 n번째ì—�서 n-1로 만들 때 ì§�수로 만들 수 있으므로 ì�´ê¸°ê²Œë�œë‹¤.

//
//  main.cpp
//  gusul
//
//  Created by Jereneal Kim on 13. 7. 16..
//  Copyright (c) 2013ë…„ __ZeroPage__. All rights reserved.
//

#include <iostream>

int main(int argc, const char * argv[])
{
    int arr[501][501]={0};
    int k1,k2;
    int barr[4];
    int tmp;
    scanf("%d %d %d",&barr[1],&barr[2],&barr[3]);
    for(int i=0;i<=500;i++){
        for(int j=0;j<=500;j++){
            tmp=0;
            for(int k=1;k<=3;k++){
                if(i>=barr[k]){
                    if(arr[i-barr[k]][j]==0&&tmp==0){
                        tmp = 1;
                    }
                }
            }
            for(int k=1;k<=3;k++){
                if(j>=barr[k]){
                    if(arr[i][j-barr[k]]==0&&tmp==0){
                        tmp = 1;
                    }
                }
            }
            arr[i][j]=tmp;
        }
    }
        
        
    for(int T=0;T<5;T++){
        scanf("%d %d",&k1,&k2);
        if(arr[k1][k2]==1){
            printf("A\n");
        }else{
            printf("B\n");
        }
    }

    return 0;
}




Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2021-02-07 05:31:40
Processing time 0.0048 sec