• <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 }
            2019久久久高清456| 亚洲欧美日韩精品久久| 亚洲va久久久噜噜噜久久| 久久久久久精品免费看SSS| 亚洲乱码中文字幕久久孕妇黑人| 久久综合久久综合久久| 久久综合亚洲鲁鲁五月天| 久久国产色AV免费观看| 久久精品国产一区二区| 亚洲中文精品久久久久久不卡| 精品国产VA久久久久久久冰| 香蕉久久AⅤ一区二区三区| 国产V亚洲V天堂无码久久久 | 久久亚洲AV成人无码软件| 亚洲午夜福利精品久久| 99久久国语露脸精品国产| 久久久久久亚洲精品不卡| 国产情侣久久久久aⅴ免费| 亚洲欧美一级久久精品| 久久免费高清视频| 一本久久a久久精品vr综合| 久久久久国色AV免费观看| 久久国产乱子精品免费女| 狠狠色丁香久久婷婷综合五月| 亚洲欧美久久久久9999| 久久婷婷人人澡人人| 久久国产精品99精品国产987| 91精品国产综合久久婷婷| 97久久精品人妻人人搡人人玩| 日韩十八禁一区二区久久| 亚洲人成无码久久电影网站| 久久无码AV中文出轨人妻| 国产精品美女久久久网AV| 国产L精品国产亚洲区久久| 精品久久久久久亚洲| 久久久久四虎国产精品| 久久久精品视频免费观看| 国内精品久久久久久久影视麻豆| 久久婷婷色综合一区二区| 久久99精品久久久久久水蜜桃 | 久久人人爽人人爽人人AV|