• <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 閱讀(414) 評論(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 }
            欧洲国产伦久久久久久久| 91精品婷婷国产综合久久| 一本久道久久综合狠狠躁AV| 99久久国产综合精品女同图片| 伊人情人综合成人久久网小说| 久久国产乱子伦免费精品| 99久久www免费人成精品| 日韩亚洲国产综合久久久| 亚洲精品国产字幕久久不卡| 亚洲一区二区三区日本久久九| 久久亚洲国产午夜精品理论片| 伊人 久久 精品| 亚洲欧美精品伊人久久| 青青青青久久精品国产| 久久久无码精品亚洲日韩按摩 | 国产午夜精品久久久久九九| 久久亚洲精精品中文字幕| 国内精品人妻无码久久久影院导航| 狠狠久久综合| 久久精品国产精品亚洲人人 | 久久99国产精品久久| 97热久久免费频精品99| 久久九九全国免费| 久久精品国产黑森林| 日韩欧美亚洲综合久久影院Ds| 久久无码av三级| 久久久久久免费一区二区三区| 国产精品无码久久综合网| 久久精品国产清高在天天线| 7777久久亚洲中文字幕| 精品久久国产一区二区三区香蕉 | 久久精品国产亚洲av高清漫画| 国产毛片欧美毛片久久久| 亚洲精品国产自在久久| 久久精品这里热有精品| 久久午夜免费视频| 久久精品成人免费国产片小草| 97久久国产露脸精品国产| 国产午夜精品理论片久久 | 国产一区二区精品久久凹凸| 无码人妻久久一区二区三区免费丨 |