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

            巢穴

            about:blank

            P3274

            hash.同余.不過這里的同余不是普通意義上的同余.

            #include <iostream>
            #include 
            <fstream>
            using namespace std;
            //ifstream fin("1.txt");
            const int MAXN=100001;
            const int mod=99991;
            int n,k;
            int c[MAXN][30];
            int d[MAXN][30];
            int h[mod];
            int p[MAXN],len=0;
            int s[MAXN];
            int result=0;
            inline 
            int hashcode(const int id)
             
            {
                
            int s = 0;
                
            for(int i=0; i<k; i++)
                    s
            =((s<<2)+(d[id][i]>>4))^(d[id][i]<<10);
                 s 
            = s % mod;
                s 
            = s < 0 ? s + mod : s;
                
            return s;
             }



            void find_hash(int x,int id)
            {
              
            int f[30];
              
            bool ok=true;
              
            for (int i=0;i<k;i++)
              
            {
               
            if (i==0) f[i]=c[id][i]-c[p[x]][i];
               
            else
               
            {
                f[i]
            =c[id][i]-c[p[x]][i];
                
            if (f[i]!=f[i-1]||f[i]==0{ok=false;break;}
               }

              }

              
            if (ok)
              
            {
               
            if (result<id-p[x]) 
               
            {
               result
            =id-p[x];
               }

              }

              
            if (s[x]==-1)
              
            {
               len
            ++;
               s[x]
            =len;
               s[len]
            =-1;
               p[len]
            =id;
               
            return;
              }

              
            else
              
            {
               find_hash(s[x],id);
              }

            }

            void hash(int u,int id)
            {
                 
            if (h[u]==-1)
                 
            {
                  len
            ++;
                  h[u]
            =len;
                  s[len]
            =-1;
                  p[len]
            =id;
                  
            return;
                 }

                 find_hash(h[u],id);
            }

            int main()
            {
                cin
            >>n>>k;
               
            if (n==1{cout<<1<<endl;exit(0);}
                memset(h,
            -1,sizeof(h));
                memset(c,
            0,sizeof(c));
                
            for (int i=1;i<=n;i++)
                
            {
                 
            int x;
                 cin
            >>x;
                 
            int l=-1;
                 
            for (int j=0;j<k;j++)
                 
            {
                  
            int p=x%2;
                  l
            ++;
                  c[i][l]
            =c[i-1][l]+p;
                  x
            /=2;
                 }

                }

                
                memcpy(d,c,
            sizeof(c));
                
            for (int i=0;i<=n;i++)
                
            {
                 
            int max=MAXN;
                 
            for (int j=0;j<k;j++)
                 
            {
                     
            if (max>d[i][j]) max=d[i][j];
                 }

                 
            for (int j=0;j<k;j++)
                 
            {
                     d[i][j]
            -=max;
                 }

                 
            int u=hashcode(i);
                 
            //cout<<u<<endl;
                 hash(u,i);
                }

                
                
                cout
            <<result<<endl;
              
            //  system("pause");
                return 0;
            }

            posted on 2009-10-21 12:46 Vincent 閱讀(156) 評論(0)  編輯 收藏 引用 所屬分類: 數(shù)據(jù)結構與算法

            国产亚洲精品久久久久秋霞| 久久国产高清一区二区三区| 三级片免费观看久久| 精品久久香蕉国产线看观看亚洲| 婷婷伊人久久大香线蕉AV| 欧美亚洲色综久久精品国产| 亚洲精品无码久久久久| 亚洲va久久久噜噜噜久久| 精品综合久久久久久97| 热re99久久6国产精品免费| 久久久久久亚洲AV无码专区| 久久精品人人做人人爽电影蜜月| 91精品国产综合久久婷婷| 久久精品国产一区| 国内精品伊人久久久久影院对白| 日本亚洲色大成网站WWW久久| 一本综合久久国产二区| 亚洲va久久久噜噜噜久久男同| 91精品国产9l久久久久| 国产AV影片久久久久久| 综合久久一区二区三区| 久久国产精品99精品国产| 一级做a爰片久久毛片人呢| 欧美国产成人久久精品| 午夜精品久久久久久99热| 国产69精品久久久久99| 狠狠色婷婷久久一区二区| 91精品国产91久久| 亚洲中文久久精品无码ww16| 伊人久久免费视频| 亚洲国产精品无码久久一区二区| 久久最新精品国产| 一本色道久久综合亚洲精品| 国产精品成人久久久久久久| 久久人妻无码中文字幕| 99久久精品无码一区二区毛片| 久久精品国产免费观看 | 国产高清美女一级a毛片久久w| 色欲综合久久躁天天躁| 国产91色综合久久免费| 久久久久久精品无码人妻|