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

            我希望你是我獨家記憶

            一段永遠封存的記憶,隨風而去
            posts - 263, comments - 31, trackbacks - 0, articles - 3
               :: 首頁 :: 新隨筆 ::  :: 聚合  :: 管理

            PKU——3274——排序

            Posted on 2008-08-30 16:08 Hero 閱讀(413) 評論(0)  編輯 收藏 引用 所屬分類: 代碼如詩--ACM
              1 //PKU 3274    Accepted    25688K    938MS    C++    2523B
              2 
              3 //輸入一個數--轉化為二進制形式保存在bits[]中
              4 //dp[i][j]用于累加前i行前j列的值
              5 
              6 //兩列的差值相等轉化為兩行的遞增相等********
              7 
              8 //對遞增排序--qsort()
              9 //遍歷一遍求出最大maxlen
             10 
             11 //注意問題 : 遍歷的時候不要忘了最后一行單獨判斷
             12 
             13 #include <stdio.h>
             14 #include <stdlib.h>
             15 #include <string.h>
             16 #include <math.h>
             17 
             18 const int size = 100100 ;
             19 
             20 int data[size] ;
             21 int dp[size][32= {0} ;
             22 
             23 struct NODE
             24 {
             25     int sub[32] ;
             26     int num ;
             27 };
             28 struct NODE node[size] ;
             29 
             30 int bits[40] ;
             31 int inn, ink ;
             32 
             33 
             34 void dec2bin( int val, int ti )
             35 {
             36     int i = 0 ;
             37     for( ; val>0; val=val>>1 )
             38     {
             39         bits[i++= val & 1 ;
             40     }
             41 
             42     for( ; i<ink; i++ ) bits[i] = 0 ;
             43 
             44     forint j=0; j<ink; j++ )
             45     {
             46         dp[ti][j] = dp[ti-1][j] + bits[j] ;
             47     }
             48 }
             49 
             50 void input() 
             51 {
             52     memset( dp, 0sizeof(dp) ) ;
             53 
             54     int val ;
             55     forint i=1; i<=inn; i++ ) 
             56     {
             57         scanf( "%d"&val ) ;
             58         dec2bin( val, i ) ;
             59     }
             60 }
             61 
             62 bool equal( int sn, int en )
             63 {
             64     int maxi = ink - 1 ;
             65     forint i=0; i<maxi; i++ )
             66     {
             67         if( node[sn].sub[i] != node[en].sub[i] ) return false ;
             68     }
             69 
             70     return true ;
             71 }
             72 
             73 int cmp( const void *a, const void *b )
             74 {
             75     struct NODE *= (struct NODE *)a ;
             76     struct NODE *= (struct NODE *)b ;
             77 
             78     int maxi = ink - 1 ;
             79     forint i=0; i<maxi; i++ )
             80     {
             81         if( c->sub[i] != d->sub[i] ) return c->sub[i] - d->sub[i] ;
             82     }
             83     return c->num - d->num ; 
             84 }
             85 
             86 void process()
             87 {
             88 
             89     node[0].num = 0 ;
             90     forint i=0; i<=ink; i++ ) node[0].sub[i] = 0 ;
             91 
             92     forint i=1; i<=inn; i++ )
             93     {
             94         node[i].num = i ;
             95         forint j=0; j<ink-1; j++ )
             96         {
             97             node[i].sub[j] = dp[i][j+1- dp[i][0] ;
             98         }
             99     }
            100 
            101     qsort( node, inn+1sizeof(node[1]), cmp ) ;
            102 
            103     int sn = 0 ; int maxlen = -1 ; int len ;
            104 
            105     forint i=1; i<=inn; i++ )
            106     {
            107         if( equal( i, sn) ) continue ;
            108         else
            109         {
            110             len = node[i-1].num - node[sn].num ;
            111             if( len > maxlen )    maxlen = len ;
            112             sn = i ;
            113         }
            114     }
            115 
            116     if( equal( inn, sn ) )
            117     {//最后一行單獨判斷
            118         len = node[inn].num - node[sn].num ;
            119         if( len > maxlen ) maxlen = len ;
            120     }
            121 
            122     printf( "%d\n", maxlen ) ;
            123 }
            124 
            125 int main()
            126 {
            127     freopen( "in.txt""r", stdin ) ;
            128 
            129     while( scanf( "%d %d"&inn, &ink ) != EOF )
            130     {
            131         input() ;
            132 
            133         process() ;
            134 
            135         //output() ;
            136     }
            137 
            138     return 0 ;
            139 }
            久久久久久久久久免免费精品 | 婷婷久久综合九色综合绿巨人 | 久久久久亚洲av无码专区| 欧美伊人久久大香线蕉综合69 | 国产一区二区久久久| 久久精品综合网| 国产精品久久久久9999| 国产精品99久久久久久www| 色偷偷88欧美精品久久久| 一本综合久久国产二区| 久久国产精品成人影院| 青青草国产97免久久费观看| 无码AV波多野结衣久久| 国产精品无码久久综合网| 中文字幕乱码久久午夜| 国内精品久久久久久不卡影院| 久久久久久久女国产乱让韩| 日本道色综合久久影院| 狠狠88综合久久久久综合网| 亚洲第一永久AV网站久久精品男人的天堂AV| 欧洲成人午夜精品无码区久久| 亚洲国产成人精品91久久久 | 青青草国产97免久久费观看| 国产亚洲综合久久系列| 久久99热这里只有精品66| 久久国产精品免费| 女人香蕉久久**毛片精品| 热re99久久精品国99热| 久久伊人精品一区二区三区| 精品久久久久久国产牛牛app| 国产精品视频久久| 久久国产热精品波多野结衣AV| 亚洲精品无码专区久久久| 看全色黄大色大片免费久久久| 超级碰久久免费公开视频| 中文字幕一区二区三区久久网站| 久久精品一本到99热免费| 久久av无码专区亚洲av桃花岛| 久久综合亚洲欧美成人| 久久精品国产亚洲AV电影| 久久人人爽人人爽人人AV|