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

            學(xué)習(xí)心得(code)

            superlong@CoreCoder

              C++博客 :: 首頁(yè) :: 聯(lián)系 :: 聚合  :: 管理
              74 Posts :: 0 Stories :: 5 Comments :: 0 Trackbacks

            公告

            文字可能放在http://blog.csdn.net/superlong100,此處存放代碼

            常用鏈接

            留言簿(4)

            我參與的團(tuán)隊(duì)

            搜索

            •  

            最新隨筆

            最新評(píng)論

            • 1.?re: Poj 1279
            • 對(duì)于一個(gè)凹多邊形用叉積計(jì)算面積 后能根據(jù)結(jié)果的正負(fù)來判斷給的點(diǎn)集的時(shí)針方向?
            • --bsshanghai
            • 2.?re: Poj 3691
            • 你寫的這個(gè)get_fail() 好像并是真正的get_fail,也是說fail指向的串并不是當(dāng)前結(jié)點(diǎn)的子串。為什么要這樣弄呢?
            • --acmer1183
            • 3.?re: HDU2295[未登錄]
            • 這個(gè)是IDA* 也就是迭代加深@ylfdrib
            • --superlong
            • 4.?re: HDU2295
            • 評(píng)論內(nèi)容較長(zhǎng),點(diǎn)擊標(biāo)題查看
            • --ylfdrib
            • 5.?re: HOJ 11482
            • 呵呵..把代碼發(fā)在這里很不錯(cuò)..以后我也試試...百度的編輯器太爛了....
            • --csuft1

            閱讀排行榜

            評(píng)論排行榜

            #include <iostream>
            #include 
            <math.h>
            #include 
            <string.h>
            #define eps 1e-7

            using namespace std;

            struct point{
                
            double x, y;
                
            void read(){scanf("%lf %lf"&x, &y);}
                
            void write(){printf("%.2lf %.2lf\n", x, y);}
                point 
            operator-(point &a)
                {
                    point t;
                    t.x 
            = x - a.x;
                    t.y 
            = y - a.y;
                    
            return t;
                }
                point 
            operator+(point &a)
                {
                    point t;
                    t.x 
            = x + a.x;
                    t.y 
            = y + a.y;
                    
            return t;
                }
            };

            int n;
            point p[
            105];

            double dist(point a, point b)
            {
                point c 
            = a - b;
                
            return sqrt( c.x * c.x + c.y * c.y);
            }

            bool flag;

            double xmul(point a, point b, point c)
            {
            return (c.x - a.x) * (b.y - a.y) - (c.y - a.y) * (b.x - a.x);}

            point intersection(point u1, point u2,point v1, point v2)
            {
                point ret 
            = u1;
                
            double t = ((u1.x - v1.x)*(v1.y-v2.y)-(u1.y-v1.y)*(v1.x-v2.x))
                            
            /((u1.x-u2.x)*(v1.y-v2.y)-(u1.y-u2.y)*(v1.x-v2.x));
                ret.x 
            += (u2.x - u1.x) * t;
                ret.y 
            += (u2.y - u1.y) * t;
                
            return ret;
            }


            point change(point a, point b, point next, 
            double L)
            {
                point t;
                t.x 
            = -(b - a).y;
                t.y 
            = (b - a).x;
                
            double len = sqrt(t.x * t.x + t.y * t.y);
                t.x 
            /= len;        t.y /= len;
                t.x 
            *= L; t.y *= L;
                t 
            = t + next;
                
            return t;
            }

            int jud(double h)
            {
                point tp[
            105], tt[105], ns, ne, s, e, pp ;
                
            int len = 0, tlen, i, j;

                
            for(i = 0; i <= n; i ++) tp[i] = p[i];
                len 
            = n;
                
                
            for(i = 0; i < n; i ++)
                {
                    s 
            = change(p[i], p[i + 1], p[i], h);
                    e 
            = change(p[i], p[i + 1], p[i + 1], h); 
                    
            //        s.write();
            //        e.write();
                    
                    tlen 
            = 0;
                    
            for(j = 0; j < len; j ++)
                    {
                        ns 
            = tp[j];    ne = tp[j + 1];
                        
            if(xmul(s, e, ns) <= 0)
                            tt[tlen 
            ++= ns;
                        
            if(xmul(s, e, ns) * xmul(s, e, ne) < 0)
                        {
                            pp 
            = intersection(s, e, ns, ne);
                            
                            tt[tlen 
            ++= pp;
                        }    
                    }
                    tt[tlen] 
            = tt[0];
                    
            for(j = 0; j <= tlen; j ++
                    {
                        tp[j] 
            = tt[j];
            //            printf("point:   ");
            //            tp[j].write();
                    }
                    len 
            = tlen;
            //        printf("%d\n", len);
                }
                
            return len;
            }

            double bsearch(double left, double right)
            {    
                
            while(right-left>eps)
                {
                    
            double mid=(left+right)/2;
            //        printf("%lf %lf %lf:\n", left, mid, right);
                    if(jud(mid))left=mid;
                    
            else          right=mid;
                }
                
            return left; 

                
            }

            int main()
            {
                
            while(scanf("%d"&n), n)
                {
                    
            for(int i = 0; i < n; i ++)
                        p[i].read();    
                    p[n] 
            = p[0];
                    
            double minn = -1, maxx = -1;
                    
            for(int i = 0; i < n; i ++)
                    
            for(int j = i + 1; j < n; j ++)
                    {
                        
            double dis = dist(p[i], p[j]) / 2;
                        
            if(dis < minn || minn < eps)
                            minn 
            = dis;
                        
            if(dis > maxx || maxx < eps)
                            maxx 
            = dis;
                    }
                    flag 
            = 0;
                    
            //printf("%.2lf  %.2lf\n", minn, maxx); while(1);
                    double ans = bsearch(0, maxx);
                    printf(
            "%.6lf\n", ans);
                }
            }

            posted on 2009-09-18 21:10 superlong 閱讀(477) 評(píng)論(0)  編輯 收藏 引用

            只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。
            網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


            久久久久成人精品无码| 久久人人爽人人人人爽AV| 久久久午夜精品福利内容| 青青热久久综合网伊人| 色婷婷久久综合中文久久蜜桃av| 内射无码专区久久亚洲| 精品久久久久一区二区三区| 久久国产乱子伦精品免费强| 91久久精一区二区三区大全| 久久久久人妻一区精品性色av| 日本五月天婷久久网站| 伊人情人综合成人久久网小说 | 精品久久人人妻人人做精品| 东京热TOKYO综合久久精品| 国产亚洲欧美精品久久久| 狠狠色丁香婷综合久久| 久久99精品综合国产首页| 青草影院天堂男人久久| 办公室久久精品| 久久免费视频一区| 精品久久久一二三区| 奇米影视7777久久精品| 久久免费的精品国产V∧| 久久久久久无码Av成人影院| 欧美一区二区精品久久| 久久影视综合亚洲| 中文无码久久精品| 日本一区精品久久久久影院| 久久久久人妻一区精品果冻| 漂亮人妻被中出中文字幕久久| 久久水蜜桃亚洲av无码精品麻豆| 色偷偷888欧美精品久久久| 亚洲国产成人精品无码久久久久久综合 | 99精品久久精品一区二区| 精品熟女少妇a∨免费久久| 久久91精品久久91综合| 久久综合久久综合亚洲| 久久精品中文无码资源站| 久久精品综合一区二区三区| 亚洲伊人久久大香线蕉综合图片| 久久久久久免费一区二区三区|