• <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>

            我希望你是我獨家記憶

            一段永遠封存的記憶,隨風而去
            posts - 263, comments - 31, trackbacks - 0, articles - 3
               :: 首頁 :: 新隨筆 ::  :: 聚合  :: 管理

            USACO522

            Posted on 2008-10-06 22:05 Hero 閱讀(116) 評論(0)  編輯 收藏 引用 所屬分類: 代碼如詩--ACM
              1 /*
              2 ID: wangzha4
              3 LANG: C++
              4 TASK: fence3
              5 */
              6 
              7 /*迭代--模擬退火
              8 Executing
              9    Test 1: TEST OK [0.011 secs, 2716 KB]
             10    Test 2: TEST OK [0.011 secs, 2716 KB]
             11    Test 3: TEST OK [0.011 secs, 2716 KB]
             12    Test 4: TEST OK [0.000 secs, 2720 KB]
             13    Test 5: TEST OK [0.011 secs, 2720 KB]
             14    Test 6: TEST OK [0.022 secs, 2720 KB]
             15    Test 7: TEST OK [0.000 secs, 2716 KB]
             16    Test 8: TEST OK [0.011 secs, 2716 KB]
             17    Test 9: TEST OK [0.000 secs, 2716 KB]
             18    Test 10: TEST OK [0.000 secs, 2716 KB]
             19    Test 11: TEST OK [0.000 secs, 2720 KB]
             20    Test 12: TEST OK [0.011 secs, 2716 KB]
             21 */
             22 #include <stdio.h>
             23 #include <stdlib.h>
             24 #include <math.h>
             25 
             26 const int itimes =50 ;
             27 const int size = 160 ;
             28 const double change = 30 ;
             29 
             30 struct Point
             31 {
             32     int x ; 
             33     int y ;
             34 };
             35 struct Point sn[size], en[size] ;
             36 
             37 const int xdir[4= { 01,  0-1 } ;
             38 const int ydir[4= { 10-1,  0 } ;//xy方向
             39 
             40 int inn ;
             41 double ansx ; double ansy ;
             42 double bestdist ;
             43 
             44 void swap( int &a, int &b )
             45 {
             46     int temp = a ; a = b ; b = temp ;
             47 }
             48 
             49 double fmin( double a, double b )
             50 {
             51     return a < b ? a : b ;
             52 }
             53 
             54 double fdist( double x1, double y1, double x2, double y2 )
             55 {
             56     return sqrt( (x1-x2)*(x1-x2) + (y1-y2)*(y1-y2) ) ;
             57 }
             58 
             59 void input()
             60 {
             61     forint i=1; i<=inn; i++ )
             62     {
             63         scanf( "%d %d"&sn[i].x, &sn[i].y ) ;
             64         scanf( "%d %d"&en[i].x, &en[i].y ) ;
             65         if( sn[i].x > en[i].x ) swap( sn[i].x, en[i].x ) ;
             66         if( sn[i].y > en[i].y ) swap( sn[i].y, en[i].y ) ;
             67     }
             68 }
             69 
             70 double comdist( double x, double y )
             71 {
             72     double reval = 0 ;
             73     forint i=1; i<=inn; i++ )
             74     {
             75         if( x>sn[i].x && x<en[i].x ) reval += fabs( y-sn[i].y ) ;
             76         else if( y>sn[i].y && y<en[i].y ) reval += fabs( x-sn[i].x ) ;
             77         else reval += fmin( fdist(x,y,sn[i].x,sn[i].y), fdist(x,y,en[i].x,en[i].y) ) ;
             78     }
             79 
             80     return reval ;
             81 }
             82 
             83 void process()
             84 {
             85     ansx = ansy = 0 ;//初始化節點坐標為(0, 0)
             86     double xchange = change ; double ychange = change ;//初始化迭代量為20
             87     bestdist = comdist( ansx, ansy ) ; int bestdir = -1 ;
             88 
             89     forint i=1; i<=itimes; i++ )
             90     {
             91         if0 == i % 10 ) 
             92         {
             93             xchange = xchange * 0.1 ; ychange = ychange * 0.1 ;
             94         }
             95         bestdir = -1 ;//初始化最優方向
             96         forint d=0; d<4; d++ )//向4個方向擴展
             97         {
             98             double tempx = ansx + xchange * xdir[d] ;
             99             double tempy = ansy + ychange * ydir[d] ;
            100 
            101             double curdist = comdist( tempx, tempy ) ;
            102             if( curdist < bestdist ) { bestdist = curdist ; bestdir = d ; }
            103         }
            104         if( bestdir != -1 ) 
            105         {
            106             ansx += xchange * xdir[bestdir] ; ansy += ychange * ydir[bestdir] ;
            107         }
            108         bestdist = comdist( ansx, ansy ) ;
            109     }
            110 }
            111 
            112 void output()
            113 {
            114     printf( "%0.1lf %0.1lf %0.1lf\n", ansx, ansy, bestdist ) ;
            115 }
            116 
            117 int main()
            118 {
            119     freopen( "fence3.in""r", stdin ) ;
            120     freopen( "fence3.out","w",stdout ) ;
            121 
            122     while( scanf( "%d"&inn ) != EOF )    
            123     {
            124         input() ;
            125 
            126         process() ;
            127 
            128         output() ;
            129     }
            130 
            131     return 0 ;
            132 }
            久久精品国产亚洲精品| 久久涩综合| 国产成人久久精品一区二区三区| 性做久久久久久久久久久| 久久久这里有精品| 色欲综合久久中文字幕网| 91精品国产高清久久久久久91 | 亚洲av成人无码久久精品| 午夜天堂av天堂久久久| 国内精品久久久久| 青青青青久久精品国产h久久精品五福影院1421 | 伊人久久成人成综合网222| 国内精品综合久久久40p| 久久久青草久久久青草| 久久人妻少妇嫩草AV蜜桃| 一本色道久久88加勒比—综合| 亚洲欧洲精品成人久久曰影片| 久久99国产精品久久99果冻传媒| 手机看片久久高清国产日韩| 久久国产乱子精品免费女| 无码精品久久久久久人妻中字| 久久成人18免费网站| 97精品久久天干天天天按摩| 亚洲另类欧美综合久久图片区| 99久久亚洲综合精品成人| 麻豆一区二区99久久久久| 无码人妻久久一区二区三区蜜桃| 久久精品免费一区二区三区| 久久久久久午夜成人影院| 亚洲精品无码专区久久久| 久久天天躁狠狠躁夜夜躁2014| 久久99久久成人免费播放| 久久婷婷综合中文字幕| 久久99精品国产| 久久国产高清字幕中文| 久久福利青草精品资源站| 久久九九亚洲精品| 青青青青久久精品国产| 91精品国产91久久久久久| 久久国产影院| 国产99久久久国产精品小说|