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

            The Fourth Dimension Space

            枯葉北風(fēng)寒,忽然年以殘,念往昔,語(yǔ)默心酸。二十光陰無(wú)一物,韶光賤,寐難安; 不畏形影單,道途阻且慢,哪曲折,如渡飛湍。斬浪劈波酬壯志,同把酒,共言歡! -如夢(mèng)令

            POJ 3512-Incidental Points 要選擇合適的算法,否則容易超時(shí)

            這道題可以算是1118,2780的升級(jí)版,因?yàn)楦菀壮瑫r(shí)了 O(∩_∩)O~
            題目的意思很簡(jiǎn)單,給你許多點(diǎn),然后讓你求出在同在一條直線上的點(diǎn)最多有多少個(gè)。
            這道題做了2個(gè)小時(shí),開(kāi)始用了暴搜的方法(那個(gè)方法不用考慮斜率不存在的情況),超時(shí)了,汗~后來(lái)改成計(jì)算斜率的方法才過(guò)的 方法如下:
            單獨(dú)考慮斜率不存在的情況,把所有的點(diǎn)按照x的大小排序,算出x相同的點(diǎn)最多有多少個(gè),保存到max1里;
            然后考慮斜率存在的情況,考慮一個(gè)定點(diǎn),把它和其它直線的斜率都算出來(lái),排序,然后再計(jì)算相同的斜率最多有多少個(gè),每個(gè)點(diǎn)都這樣算一遍,取最大值中的最大值,存在max2中;
            最后比較max1和max2+1(注意max2我們是用斜率算的,它代表max2+1個(gè)點(diǎn))取較大值輸出即可;

            #include<iostream>
            #include
            <cmath>
            #include
            <cstdio>
            #include
            <algorithm>
            using namespace std;

            struct node {
                
            int x;
                
            int y;
            }
            set[1001];

            int cmp(const void *a,const void *b)
            {

                
            struct node*c=(node *)a;
                
            struct node*d=(node* )b;
                
            return c->x-d->x;
            }


            char temp[100];
            double slope[10001];


            int main ()

            {

                
            int n;
                
            int i,j,k;
                
            int testcase;
                testcase
            =0;
                
            int max1;
                
            int max2;
                
            int pos;
                
            int tempmax2;
                
            for(testcase=1;;testcase++)
                
            {

                    pos
            =0;
                    
            while(gets(temp))
                    
            {

                        
            if(temp[0]=='-'&&temp[1]=='-')
                            
            break;
                        pos
            ++;
                        sscanf(temp,
            "%d%d",&set[pos].x,&set[pos].y);
                    }

                    n
            =pos;
                    
            if(n==0)
                        
            break;
                    
            int tempmax=1;
                    max1
            =0;
                    qsort(
            set+1,n,sizeof(set[1]),cmp);
                    
            for(i=2;i<=n;i++)
                    
            {
                        
            if(set[i].x!=set[i-1].x)
                            tempmax
            =1;
                        
            else
                            tempmax
            ++;
                        
            if(tempmax>max1)
                            max1
            =tempmax;
                    }

                    max2
            =0;
                    
            for(i=1;i<=n;i++)
                    
            {
                        pos
            =0;
                        
            for(j=1;j<=n;j++)
                        
            {

                            
            if(i!=j&&set[i].x!=set[j].x)
                            
            {
                                pos
            ++;
                                slope[pos]
            =((double)set[j].y-set[i].y)/((double)set[j].x-set[i].x);

                            }

                        }

                        sort(slope
            +1,slope+1+pos);
                        tempmax
            =1;
                        
                        tempmax2
            =0;
                        
            for(j=2;j<=pos;j++)
                        
            {
                            

                            
            if(slope[j]!=slope[j-1])
                                tempmax
            =1;
                            
            else
                                tempmax
            ++;
                            
            if(tempmax>tempmax2)
                                tempmax2
            =tempmax;
                        }

                        
            if(tempmax2>max2)
                            max2
            =tempmax2;
                    }

                    
            if(max1>max2)
                        printf(
            "%d. %d\n",testcase,max1);
                    
            else
                        printf(
            "%d. %d\n",testcase,max2+1);

                    }


                
            return 0;
            }


            posted on 2009-03-21 00:48 abilitytao 閱讀(1194) 評(píng)論(5)  編輯 收藏 引用

            評(píng)論

            # re: POJ 3512-Incidental Points 要選擇合適的算法,否則容易超時(shí) 2009-03-21 14:16 Wisely

            這個(gè)題目算是影像處理(Image Processing)領(lǐng)域的入門(mén)題。解法可參考Huff Transform,此演算法原用來(lái)在影像上找出點(diǎn)的位置。知道演算法的話,應(yīng)該很快就可以把程式寫(xiě)出來(lái)了,其中線的表示方式,可以用theta(角度)來(lái)表示,追求程式執(zhí)行效能的話,可以視你需要的精確度,將cos及sin的值先算出來(lái)作成mapping table。  回復(fù)  更多評(píng)論   

            # re: POJ 3512-Incidental Points 要選擇合適的算法,否則容易超時(shí)[未登錄](méi) 2009-03-21 16:08 abilitytao

            @Wisely
            說(shuō)得很專業(yè)呵 要向你學(xué)習(xí)才是
            對(duì)了 你為什么用繁體呢?你是臺(tái)灣人么?  回復(fù)  更多評(píng)論   

            # re: POJ 3512-Incidental Points 要選擇合適的算法,否則容易超時(shí)[未登錄](méi) 2009-03-21 16:18 abilitytao

            @Wisely
            對(duì)了 我可以和你單獨(dú)交流一下嗎
            我的qq是:64076241
              回復(fù)  更多評(píng)論   

            # re: POJ 3512-Incidental Points 要選擇合適的算法,否則容易超時(shí) 2009-03-21 23:16 megax

            最近好多人都喜歡做題?  回復(fù)  更多評(píng)論   

            # re: POJ 3512-Incidental Points 要選擇合適的算法,否則容易超時(shí)[未登錄](méi) 2009-03-21 23:44 abilitytao

            @megax
            這個(gè)。。。因?yàn)槲疫€在上大學(xué) 所以需要做題提高一下自己的能力 希望您能多給我們這些學(xué)生一點(diǎn)指點(diǎn)呵  回復(fù)  更多評(píng)論   


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


            亚洲国产精品久久久久久| 久久人人超碰精品CAOPOREN| 久久久久久亚洲精品不卡| 久久精品无码一区二区日韩AV| 99久久精品九九亚洲精品| 久久精品国产一区二区三区不卡| 精品久久久久久无码国产| 99久久免费国产精精品| 天天影视色香欲综合久久| 国内精品久久久久影院免费| 久久久久亚洲AV无码观看| 国产精品va久久久久久久| 日本强好片久久久久久AAA | 蜜桃麻豆www久久国产精品| 久久久久久久久久久精品尤物 | 品成人欧美大片久久国产欧美| 亚洲人成无码网站久久99热国产| 国产精品禁18久久久夂久| 亚洲av日韩精品久久久久久a| 国产亚洲色婷婷久久99精品91| 国内精品久久久久久久久电影网 | 国产精品中文久久久久久久| 久久噜噜久久久精品66| 久久99精品综合国产首页| 亚洲午夜久久久久妓女影院 | 久久九九久精品国产| 久久国产精品99久久久久久老狼| 国产精品久久久久a影院| 久久久久久久综合综合狠狠| 久久er热视频在这里精品| 久久丫精品国产亚洲av不卡| 久久国产欧美日韩精品免费| 三级片免费观看久久| 久久e热在这里只有国产中文精品99 | 久久狠狠爱亚洲综合影院 | 国内精品伊人久久久久| 国内精品久久久久伊人av| 麻豆亚洲AV永久无码精品久久 | 99精品国产在热久久| 久久不射电影网| 大美女久久久久久j久久|