• <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 }
            中文字幕热久久久久久久| 国产欧美久久一区二区| 色播久久人人爽人人爽人人片aV| 久久本道伊人久久| 要久久爱在线免费观看| 人人妻久久人人澡人人爽人人精品 | 一级做a爰片久久毛片人呢| 狠狠狠色丁香婷婷综合久久五月| 久久超乳爆乳中文字幕| 久久91精品综合国产首页| 无码超乳爆乳中文字幕久久| 精品久久久无码中文字幕| 日韩精品久久久久久久电影蜜臀| 国产精品久久久久影院色| 大香伊人久久精品一区二区| 成人国内精品久久久久影院VR| 久久久久久伊人高潮影院| 久久婷婷五月综合97色直播| 国产精品99久久不卡| 久久国产乱子伦免费精品| 久久人妻少妇嫩草AV蜜桃| 中文字幕无码免费久久| 久久久久se色偷偷亚洲精品av| 日韩电影久久久被窝网| 国产欧美久久久精品影院| 久久久久婷婷| 久久人与动人物a级毛片| 久久WWW免费人成一看片| 国产精品对白刺激久久久| 91视频国产91久久久| 免费精品久久久久久中文字幕| 精品久久久久中文字| 无码人妻久久久一区二区三区| 欧美一区二区三区久久综| 99国内精品久久久久久久| 亚洲?V乱码久久精品蜜桃| 亚洲AV乱码久久精品蜜桃| 久久精品无码av| 88久久精品无码一区二区毛片 | 久久精品a亚洲国产v高清不卡| 新狼窝色AV性久久久久久|