ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 기지국
    백준알고리즘 2019. 7. 14. 23:33
    #include<cstdio>
    #include<iostream>
    #include<algorithm>
    #include<utility>
    using namespace std;
    
    typedef pair<int, int> PAIR;
    #define X first
    #define Y second
    
    int n;
    PAIR b[10005];
    int d[10005];
    
    
    int main(){
        scanf("%d", &n);
        for(int i = 0; i < n; i++){
            scanf("%d %d", & b[i].X, &b[i].Y);
            if(b[i].Y < 0)
            {
                b[i].Y = -b[i].Y;
            }
        }
    
        sort(b, b + n );
    
        d[0] = b[0].Y * 2;
        for(int i = 1; i < n ; i++){
            int mx_height = b[i].Y;
            d[i] = d[i-1] + b[i].Y *2;
            for(int j = i-1; j>= 0; j--){
                mx_height = max(mx_height, b[j].Y);
                if(j > 0){
                    d[i] = min(d[i], max(2 * mx_height, b[i].X- b[j].X)+d[j - 1]);
    
                } else
                    d[i] = min(d[i], max(2* mx_height, b[i].X - b[j].X));
            }
    
        }
        printf("%d", d[n-1]);
    
        return 0;
    }
    
    

    DP 문제, 어려웠음 생각의 전환이 필요한듯..

    '백준알고리즘' 카테고리의 다른 글

    유기농 배추  (0) 2019.07.17
    연구소  (0) 2019.07.17
    욕심쟁이 판다  (0) 2019.07.13
    동물원  (0) 2019.07.13
    정수 삼각형  (0) 2019.07.13

    댓글

Designed by Tistory.