• <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ù)來(lái)判斷給的點(diǎn)集的時(shí)針?lè)较颍?
            • --bsshanghai
            • 2.?re: Poj 3691
            • 你寫的這個(gè)get_fail() 好像并是真正的get_fail,也是說(shuō)fail指向的串并不是當(dāng)前結(jié)點(diǎn)的子串。為什么要這樣弄呢?
            • --acmer1183
            • 3.?re: HDU2295[未登錄](méi)
            • 這個(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)論排行榜

            最遠(yuǎn)點(diǎn)對(duì)問(wèn)題

                類似于“最近點(diǎn)對(duì)問(wèn)題”,這個(gè)問(wèn)題也可以用枚舉的方法求解,時(shí)間復(fù)雜度O(n^2)。假設(shè)平面上有n個(gè)點(diǎn),那么這一對(duì)最遠(yuǎn)點(diǎn)必然存在于這n個(gè)點(diǎn)所構(gòu)成的一 個(gè)凸包上,為了降低時(shí)間復(fù)雜度,可以先將這n個(gè)點(diǎn)按極角排序,然后利用Graham_scan法求出這個(gè)凸包,再枚舉凸包上的所有頂點(diǎn)(也可以用旋轉(zhuǎn)卡 殼)求出這個(gè)最遠(yuǎn)距離,時(shí)間復(fù)雜度O(nlogn)。再最壞的情況下,如果這n個(gè)點(diǎn)本身就構(gòu)成了一個(gè)凸包,時(shí)間復(fù)雜度為O(n^2)。該算法的平均復(fù)雜度 為O(nlogn)。
            #include <cstdio>
            #include 
            <cstring>
            #include 
            <cmath>
            #include 
            <cstdlib>

            const int MAXN = 100001;
            const double eps = 1e-6;
            struct point{
                
            double x,y;
            }p[MAXN],h[MAXN];

            inline 
            double distance(const point &p1,const point &p2){
                
            return sqrt((p1.x-p2.x)*(p1.x-p2.x)+(p1.y-p2.y)*(p1.y-p2.y));
            }
            inline 
            double multiply(const point &sp,const point &ep,const point &op){
                  
            return ((sp.x-op.x)*(ep.y-op.y)-(ep.x-op.x)*(sp.y-op.y));
            }
            int cmp(const void *a,const void *b){
                point 
            *p1 = (point *)a;
                point 
            *p2 = (point *)b;
                
            double t = (p1->y-p[0].y)*(p2->x-p[0].x)-(p2->y-p[0].y)*(p1->x-p[0].x);
                
            if(t>eps) return 1;
                
            else if(fabs(t)<=eps) return 0;
                
            else return -1;
            }
            void anglesort(point p[],int n){
                
            int i,k=0;
                point temp;
                
            for(i=1;i<n;i++)
                    
            if(p[i].x<p[k].x || (p[i].x==p[k].x) && (p[i].y<p[k].y))
                        k
            =i;
                temp
            =p[0],p[0]=p[k],p[k]=temp;
                qsort(p
            +1,n-1,sizeof(point),cmp);
            }
            void Graham_scan(point p[],point ch[],int n,int &len){
                
            int i,top=2;
                anglesort(p,n);
                
            if(n<3){
                    
            for(i=0,len=n;i<n;i++) ch[i]=p[i];
                    
            return;
                }
                ch[
            0]=p[0],ch[1]=p[1],ch[2]=p[2];
                
            for(i=3;i<n;i++){
                    
            while(multiply(p[i],ch[top],ch[top-1])>=0) top--;
                    ch[
            ++top]=p[i];
                }
                len
            =top+1;
            }
            int main(){
                
            int i,j,n,len;
                
            double d,ans;
                
            while(scanf("%d",&n),n){
                    
            for(i=0;i<n;i++) scanf("%lf %lf",&p[i].x,&p[i].y);
                    Graham_scan(p,h,n,len);
                    
            for(ans=i=0;i<len;i++)
                        
            for(j=i+1;j<len;j++){
                            d
            =distance(h[i],h[j]);
                            
            if(d>ans) ans=d;
                        }
                    printf(
            "%.2lf\n",ans);
                }
                
            return 0;
            }


            接下來(lái)所謂旋轉(zhuǎn)卡殼法(類似求數(shù)組中最長(zhǎng)子段的和):
            int main(){
                
            while(~scanf("%d"&n))    {
                    
            for(int i = 0; i < n; i ++)
                        p[i].read();
                    
            int top = 0;
                    tubao(p, id, n, top);
                    
            int area, area2, i, j, k, t, maxx = 0;
                    
            for(i = 0, k = 2; i < top; i ++){
                        j 
            = (i + 1% top;
                        t 
            = (k + 1% top;
                        area 
            = fabs(xmul(p[id[i]], p[id[k]], p[id[j]]));
                        area2 
            = fabs(xmul(p[id[i]], p[id[t]], p[id[j]]));
                        
            while(area < area2){    
                            area 
            = area2;
                            k 
            = (k + 1% top;
                            t 
            = (k + 1% top;
                            area2 
            = fabs(xmul(p[id[i]], p[id[t]], p[id[j]]));
                            maxx 
            = max(maxx, max( dist(p[id[i]], p[id[k]]), dist(p[id[i]], p[id[t]]) ));
                        }
                    }
                    
            if(maxx != 0)
                        printf(
            "%lf\n", maxx);
                    
            else
                        printf(
            "%lf\n", dist(p[id[0]], p[id[top-1]]));

                }

            }

            posted on 2009-08-05 11:59 superlong 閱讀(706) 評(píng)論(0)  編輯 收藏 引用

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


            国产成人精品久久亚洲高清不卡| 久久综合精品国产一区二区三区 | 久久精品国产精品亚洲毛片| 欧洲性大片xxxxx久久久| 亚洲国产精品久久66| 久久国产精品99久久久久久老狼 | 国产伊人久久| 99久久婷婷国产综合精品草原| 久久精品亚洲日本波多野结衣 | 久久久久高潮综合影院| 一本色道久久综合狠狠躁篇| 亚洲欧美一区二区三区久久| 国产精品久久影院| 久久精品国产亚洲av麻豆色欲 | 91久久精品国产成人久久| 热久久国产精品| 久久夜色撩人精品国产| 亚洲乱码日产精品a级毛片久久| 伊人久久大香线蕉无码麻豆| 久久久久亚洲AV片无码下载蜜桃 | 日韩精品无码久久一区二区三| 亚洲国产成人精品91久久久| 亚洲综合伊人久久综合| 国产精品久久久久久| 国内精品久久久久久中文字幕| 香港aa三级久久三级老师2021国产三级精品三级在 | 青青青国产成人久久111网站| www亚洲欲色成人久久精品| 久久久99精品一区二区| 亚洲精品美女久久777777| 91久久国产视频| 国产精品99久久久精品无码| 91久久九九无码成人网站| 久久精品日日躁夜夜躁欧美| 久久精品国产69国产精品亚洲| 欧美无乱码久久久免费午夜一区二区三区中文字幕 | 久久久久亚洲爆乳少妇无 | 亚洲第一极品精品无码久久| yellow中文字幕久久网| 久久九九精品99国产精品| 久久久久国产一级毛片高清板|