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

            bon

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

            常用鏈接

            留言簿(2)

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

            搜索

            •  

            最新評(píng)論

            • 1.?re: pku 1861
            • 評(píng)論內(nèi)容較長,點(diǎn)擊標(biāo)題查看
            • --edward2
            • 2.?re: pku 3349
            • 大哥超時(shí) 勒
            • --sum
            • 3.?re: pku 3070
            • 學(xué)習(xí)下,哇哈哈
            • --bear
            • 4.?re: poj 3340
            • 不用DFS的,直接有數(shù)學(xué)規(guī)律的,找出滿足條件的最小的數(shù)就可以了
            • --czcomt
            • 5.?re: pku 3070
            • 方法不錯(cuò)額~~~
            • --Zeor

            閱讀排行榜

            評(píng)論排行榜

            poj 3349

            本來不想看discuss了,不過因?yàn)檫@道題拖太久了,所以還是看了一下^_^,不過算法還是自己想的。
            之前程序已經(jīng)做好了,但一直WA,估計(jì)不是算法的錯(cuò),而是程序的錯(cuò)。

            這道題給了兩個(gè)啟示:
            1. 點(diǎn)的哈希函數(shù):我是把坐標(biāo)值(六個(gè)整數(shù)值)求和模149997,哈希表長度是150000。嚴(yán)蔚敏的《數(shù)據(jù)結(jié)構(gòu)》指出:模的數(shù)可以選為質(zhì)數(shù)或不包
                含小于20的質(zhì)因數(shù)的合數(shù)。另外這個(gè)數(shù)要盡量接近哈希表長度,這樣才能有效利用哈希表的空間,而不會(huì)使得數(shù)據(jù)集中在前面。

            2. 有大量輸入時(shí)(100000×6個(gè)整數(shù)),每個(gè)整數(shù)最長有7位,這時(shí)用getchar()輸入字符再轉(zhuǎn)成整數(shù)會(huì)比scanf()輸入整數(shù)快很多!(2438ms VS 610ms)

            3. 這道題的數(shù)據(jù)可以是這樣:1 2 3 1 5 6 與 1 5 6 1 2 3是同一朵雪花,但我之前的程序沒有判斷出來。具體看下面程序里的equal函數(shù)。

              1 #include <iostream>
              2 #include <set>
              3 
              4 using namespace std;
              5 
              6 const int maxn=150000;
              7 struct node{
              8     node(){idx=-1;next=NULL;}
              9     node(int id){idx=id;next=NULL;}
             10     int idx;
             11     node *next;
             12 }table[maxn];
             13 
             14 int a[100010][6];
             15 int n;
             16 int hash(int *a)
             17 {
             18     //a[6]=0;
             19     __int64 sum=0;
             20     for(int i=0;i<6;i++) sum+=a[i];//*a[i]);
             21     return sum%149997;
             22 }
             23 
             24 void init()
             25 {
             26     for(int i=0;i<n;i++){
             27         table[i].idx=-1;
             28         table[i].next=NULL;
             29     }
             30 }
             31 
             32 bool equal(int i,int j)
             33 {
             34     //if(a[i][6]!=a[j][6]) return false;
             35     int x,yy=0,y;
             36     int flag=0;
             37     while(yy<6){
             38         while(yy<6 && a[j][yy]!=a[i][0]) yy++;
             39         if(yy==6return false;
             40         y=yy;
             41         for(x=0;x<6;x++){
             42             if(a[i][x]==a[j][y]){
             43                 y++;
             44                 if(y==6) y=0;
             45             }
             46             else break;
             47         }
             48         if(x==6return true;
             49         y=yy;
             50         for(x=0;x<6;x++){
             51             if(a[i][x]==a[j][y]){
             52                 y--;
             53                 if(y==-1) y=5;
             54             }
             55             else break;
             56         }
             57         if(x==6return true;
             58         yy++;
             59     }
             60     return false;
             61 }
             62 
             63 // 讀入字符并轉(zhuǎn)成整數(shù)
             64 void readNumber(int i)
             65 {
             66     char ch;
             67     //ch=getchar();
             68     ch=getchar();
             69     while(ch==' ') ch=getchar();
             70     int x=0;
             71     while(ch!=' ') {x*=10;x+=ch-'0';ch=getchar();}
             72     a[i][0]=x;
             73 
             74     ch=getchar();
             75     while(ch==' ') ch=getchar();
             76     x=0;
             77     while(ch!=' ') {x*=10;x+=ch-'0';ch=getchar();}
             78     a[i][1]=x;
             79 
             80     ch=getchar();
             81     while(ch==' ') ch=getchar();
             82     x=0;
             83     while(ch!=' ') {x*=10;x+=ch-'0';ch=getchar();}
             84     a[i][2]=x;
             85 
             86     ch=getchar();
             87     while(ch==' ') ch=getchar();
             88     x=0;
             89     while(ch!=' ') {x*=10;x+=ch-'0';ch=getchar();}
             90     a[i][3]=x;
             91 
             92     ch=getchar();
             93     while(ch==' ') ch=getchar();
             94     x=0;
             95     while(ch!=' ') {x*=10;x+=ch-'0';ch=getchar();}
             96     a[i][4]=x;
             97 
             98     ch=getchar();
             99     while(ch==' ') ch=getchar();
            100     x=0;
            101     while(ch!=10 && ch!=' ')
            102     {
            103         x*=10;
            104         x+=ch-'0';
            105         ch=getchar();
            106     }
            107     a[i][5]=x;
            108     if(ch==' '){
            109         ch=getchar();
            110         while(ch!=10) ch=getchar();
            111     }
            112 }
            113 
            114 bool solve()
            115 {
            116     scanf("%d",&n);
            117     getchar();
            118     //init();
            119     int i,flag=0;
            120     node *tmp,*tmp2;
            121     for(i=0;i<&& !flag;i++){
            122         //scanf("%d%d%d%d%d%d",&a[i][0],&a[i][1],&a[i][2],&a[i][3],&a[i][4],&a[i][5]);
            123         readNumber(i);
            124         int code=hash(a[i]);
            125         if(table[code].idx==-1){
            126             table[code].idx=i;
            127         }else{
            128             //flag=0;
            129             tmp2=NULL;
            130             tmp=&(table[code]);
            131             while(tmp!=NULL){
            132                 if(equal(i,tmp->idx)) {flag=1;break;}
            133                 tmp2=tmp;
            134                 tmp=tmp->next;
            135             }
            136             if(!flag) tmp2->next=new node(i);
            137         }
            138     }
            139     //printf("%d\n",i);
            140     /*
            141     int aa,bb,cc,xx,yy,zz;
            142     
            143     if(i<n){
            144         for(;i<n;i++) scanf("%d%d%d%d%d%d",&aa,&bb,&cc,&xx,&yy,&zz);
            145     }
            146     */
            147     if(flag) return true;
            148     return false;
            149 }
            150 
            151 int main()
            152 {
            153     //freopen("in.txt","r",stdin);
            154     if(solve()) printf("Twin snowflakes found.\n");
            155     else printf("No two snowflakes are alike.\n");
            156     return 1;
            157 }
            158 
            159 
            160 

            posted on 2008-05-24 11:34 bon 閱讀(1085) 評(píng)論(1)  編輯 收藏 引用 所屬分類: Programming Contest

            Feedback

            # re: pku 3349 2009-06-24 17:07 sum
            大哥超時(shí) 勒  回復(fù)  更多評(píng)論
              

            Google PageRank 
Checker - Page Rank Calculator
            香蕉久久一区二区不卡无毒影院| 久久国产精品一区| 欧美伊人久久大香线蕉综合69 | 亚洲成色999久久网站| 欧美与黑人午夜性猛交久久久| 国产色综合久久无码有码| 99久久亚洲综合精品成人| 99久久国产宗和精品1上映| 99久久综合狠狠综合久久| 狠狠88综合久久久久综合网| 日本国产精品久久| 国产高清美女一级a毛片久久w| 欧美精品久久久久久久自慰| 久久亚洲精品国产亚洲老地址| 草草久久久无码国产专区| 99久久国产宗和精品1上映| 欧美与黑人午夜性猛交久久久 | 久久婷婷人人澡人人| 91精品国产综合久久精品| 欧美日韩精品久久免费| 青青青青久久精品国产h久久精品五福影院1421| 国产∨亚洲V天堂无码久久久| 久久久久久精品免费看SSS| 欧美色综合久久久久久| 国产午夜福利精品久久| 热久久国产精品| 青青草原1769久久免费播放| 久久国产精品成人免费| 精品久久香蕉国产线看观看亚洲| 日日躁夜夜躁狠狠久久AV| 亚洲精品乱码久久久久久按摩| 久久伊人五月丁香狠狠色| 亚洲精品国产综合久久一线| 久久亚洲精品无码播放| 一级做a爰片久久毛片免费陪| 久久国产香蕉视频| 久久性生大片免费观看性| 久久免费视频6| 久久精品无码一区二区WWW| 精品久久久中文字幕人妻 | 香蕉久久夜色精品国产尤物 |