• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            coreBugZJ

            此 blog 已棄。

            EOJ 1189 Wall POJ 1113 Wall

              1/*
              2EOJ 1189 Wall
              3POJ 1113 Wall
              4
              5
              6----問題描述:
              7
              8Once upon a time there was a greedy King who ordered his chief Architect to build a wall around the King's castle. The King was so greedy, that he would not listen to his Architect's proposals to build a beautiful brick wall with a perfect shape and nice tall towers. Instead, he ordered to build the wall around the whole castle using the least amount of stone and labor, but demanded that the wall should not come closer to the castle than a certain distance. If the King finds that the Architect has used more resources to build the wall than it was absolutely necessary to satisfy those requirements, then the Architect will loose his head. Moreover, he demanded Architect to introduce at once a plan of the wall listing the exact amount of resources that are needed to build the wall.
              9
             10Your task is to help poor Architect to save his head, by writing a program that will find the minimum possible length of the wall that he could build around the castle to satisfy King's requirements.
             11
             12The task is somewhat simplified by the fact, that the King's castle has a polygonal shape and is situated on a flat ground. The Architect has already established a Cartesian coordinate system and has precisely measured the coordinates of all castle's vertices in feet. 
             13
             14
             15----輸入:
             16
             17Input contains several test cases. The first line of each case contains two integer numbers N and L separated by a space. N (3 <= N <= 1000) is the number of vertices in the King's castle, and L (1 <= L <= 1000) is the minimal number of feet that King allows for the wall to come close to the castle.
             18
             19Next N lines describe coordinates of castle's vertices in a clockwise order. Each line contains two integer numbers Xi and Yi separated by a space (-10000 <= Xi, Yi <= 10000) that represent the coordinates of ith vertex. All vertices are different and the sides of the castle do not intersect anywhere except for vertices.
             20 
             21Process to end of file. 
             22
             23
             24----輸出:
             25
             26For each case in the input, write to the output file the single number that represents the minimal possible length of the wall in feet that could be built around the castle to satisfy King's requirements. You must present the integer number of feet to the King, because the floating numbers are not invented yet. However, you must round the result in such a way, that it is accurate to 8 inches (1 foot is equal to 12 inches), since the King will not tolerate larger error in the estimates.
             27
             28
             29----樣例輸入:
             30
             319 100
             32200 400
             33300 400
             34300 300
             35400 300
             36400 400
             37500 400
             38500 200
             39350 200
             40200 200 
             41
             42
             43----樣例輸出:
             44
             451628
             46
             47
             48----分析:
             49
             50Graham-Scan 求凸包,再根據夾角,求弧長,而總弧長就是周長。
             51
             52
             53*/

             54
             55
             56#include <iostream>
             57#include <cstdio>
             58#include <cmath>
             59#include <algorithm>
             60
             61using namespace std;
             62
             63// #define  TEST
             64
             65#define  N  1009
             66typedef  pair< intint > Point;
             67#define  y  first
             68#define  x  second
             69#define  PI  3.14159265358979
             70
             71int    n;
             72int    le;
             73Point  p[ N ];
             74
             75double solve() {
             76        static Point stk[ N ];
             77        int    tp, i, ntp;
             78        double ans = 0;
             79
             80        sort( p, p+n );
             81
             82#ifdef  TEST
             83        for ( i = 0; i < n; ++i ) {
             84                printf( "x = %d  y = %d\n", p[ i ].x, p[ i ].y );
             85        }

             86#endif
             87
             88        tp = 0;
             89        stk[ tp ] = p[ 0 ];
             90        for ( i = 1; i < n; ++i ) {
             91                while ( (0 < tp) && 
             92                        ((stk[tp].x-stk[tp-1].x)*(p[i].y-stk[tp].y) - 
             93                         (p[i].x-stk[tp].x)*(stk[tp].y-stk[tp-1].y) <= 0
             94                      ) {
             95                                --tp;
             96                }

             97                ++tp;
             98                stk[ tp ] = p[ i ];
             99        }

            100
            101#ifdef  TEST
            102        printf( "stk 1\n" );
            103        for ( i = 0; i <= tp; ++i ) {
            104                printf( "stk x = %d  y = %d\n", stk[ i ].x, stk[ i ].y );
            105        }

            106#endif
            107
            108        ntp = tp; // 左右鏈必須分開處理,點(n-1)左右鏈共用
            109        for ( i = n-2; i >= 0--i ) {
            110                while ( (ntp < tp) && 
            111                        ((stk[tp].x-stk[tp-1].x)*(p[i].y-stk[tp].y) - 
            112                         (p[i].x-stk[tp].x)*(stk[tp].y-stk[tp-1].y) <= 0
            113                      ) {
            114                                --tp;
            115                }

            116                ++tp;
            117                stk[ tp ] = p[ i ];
            118        }

            119
            120#ifdef  TEST
            121        printf( "stk all\n" );
            122        for ( i = 0; i <= tp; ++i ) {
            123                printf( "stk x = %d  y = %d\n", stk[ i ].x, stk[ i ].y );
            124        }

            125#endif
            126
            127        for ( i = 0; i < tp; ++i ) {
            128                ans += sqrt((double)( 
            129                                (stk[i].x-stk[i+1].x)*(stk[i].x-stk[i+1].x) 
            130                                + (stk[i].y-stk[i+1].y)*(stk[i].y-stk[i+1].y) 
            131                        ));
            132        }

            133
            134        ans += 2 * PI * le;
            135        return ans;
            136}

            137
            138int main() {
            139        int i;
            140        while ( 2 == scanf( "%d%d"&n, &le ) ) {
            141                for ( i = 0; i < n; ++i ) {
            142                        scanf( "%d%d"&(p[ i ].x), &(p[ i ].y) );
            143                }

            144                printf( "%0.0lf\n", solve() );
            145        }

            146        return 0;
            147}

            148

            posted on 2012-05-13 22:52 coreBugZJ 閱讀(742) 評論(0)  編輯 收藏 引用 所屬分類: ACMAlgorithm課內作業

            国产亚洲精久久久久久无码AV| 国产福利电影一区二区三区久久老子无码午夜伦不| 精品综合久久久久久97超人 | 精品亚洲综合久久中文字幕| 成人久久久观看免费毛片| 国产精品伊人久久伊人电影| 亚洲va久久久久| 伊人久久精品线影院| 久久婷婷国产剧情内射白浆| 色综合久久88色综合天天| 亚洲精品美女久久777777| 国内精品久久久久久久久| 久久亚洲精品国产精品| 欧美无乱码久久久免费午夜一区二区三区中文字幕 | 99精品国产在热久久| 青春久久| 久久精品国产欧美日韩| 久久精品人人做人人爽电影蜜月 | 精品国产一区二区三区久久| 91麻豆国产精品91久久久| 韩国三级中文字幕hd久久精品| 浪潮AV色综合久久天堂| 久久亚洲精品无码VA大香大香| 2020最新久久久视精品爱| 国产精品一久久香蕉产线看| 亚洲国产精品高清久久久| 99精品国产免费久久久久久下载| 国内精品免费久久影院| 色综合久久综合网观看| 国产午夜精品理论片久久影视| 无码专区久久综合久中文字幕| 久久伊人精品一区二区三区| 久久久久香蕉视频| 欧美激情精品久久久久久久九九九| 久久久综合九色合综国产| 久久青青草原综合伊人| 国产精品一区二区久久精品无码| 国产免费久久精品丫丫| 久久嫩草影院免费看夜色| 色综合久久天天综线观看| 欧美亚洲国产精品久久|