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

            學習心得(code)

            superlong@CoreCoder

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

            公告

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

            常用鏈接

            留言簿(4)

            我參與的團隊

            搜索

            •  

            最新隨筆

            最新評論

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

            閱讀排行榜

            評論排行榜

            #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 閱讀(475) 評論(0)  編輯 收藏 引用
            91久久精品国产91性色也| 亚洲国产成人精品91久久久| 国内精品久久久久久99| 九九久久99综合一区二区| 国产精品九九久久精品女同亚洲欧美日韩综合区 | 99国产精品久久久久久久成人热| 午夜久久久久久禁播电影| 久久精品国产亚洲AV无码娇色| 国产精品对白刺激久久久| 久久黄视频| 久久天天躁狠狠躁夜夜躁2O2O| 久久精品国产亚洲av影院| 久久精品亚洲欧美日韩久久| 欧美喷潮久久久XXXXx| 久久这里有精品| 欧美亚洲国产精品久久蜜芽| 日韩va亚洲va欧美va久久| 2021精品国产综合久久| 一本久久综合亚洲鲁鲁五月天| 国内精品伊人久久久久av一坑| 伊人久久精品影院| 久久久黄片| 亚洲国产成人久久综合碰碰动漫3d| 欧美日韩精品久久免费| 久久久久久国产精品美女| 久久国产乱子精品免费女| 亚洲va久久久噜噜噜久久男同 | 伊人久久免费视频| 亚洲国产精品一区二区久久hs| 国产日韩欧美久久| 色综合色天天久久婷婷基地| 91精品国产乱码久久久久久| 欧美va久久久噜噜噜久久| 2021最新久久久视精品爱| 色99久久久久高潮综合影院| 国产成人精品久久一区二区三区av| 久久99精品久久只有精品| 国产精品美女久久久久久2018| 日本强好片久久久久久AAA| 色综合久久中文字幕无码| 久久久久国产精品熟女影院|