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

            coreBugZJ

            此 blog 已棄。

            Suneast’s blocks , FZU 2011年3月月賽之 B, FZU 2011

            Problem 2011 Suneast’s blocks

            Time Limit: 1000 mSec    Memory Limit : 32768 KB

            Problem Description

            Suneast loves playing with blocks so much. He has many small triangle blocks:

            He always likes using these small block to make a bigger one:

            The size of the small triangle is 1 and different block has different color, each color is expressed using an UPPER case alpha, so we can represent the big triangle above as the figure shows on the right.('~' means BLANK here)

            Now, Suneast want to know, what is the size of the largest sub-strangle with the same color within the bigger one.

            Input

            The first line of the input data is an integer number T, represent the number of test cases.

            The first line of each test case has an integer N (1<=n<=100), means the height of the big triangle. Then following N lines, each line has exactly 2*i-1 UPPER case letters represent the small triangle.

            Output

            For each test case, output a single line “Case %d: The largest block is %d.”, the first %d means the current case index, and the second %d is the size of the largest block.

            Sample Input

            3
            3
            A
            BCD
            EFDDD
            4
            A
            CCA
            CAAAC
            CACACAC
            4
            T
            ORZ
            DAXIA
            YAYAMAO

            Sample Output

            Case 1: The largest block is 4.
            Case 2: The largest block is 4.
            Case 3: The largest block is 1.

            Source

            FOJ有獎(jiǎng)月賽-2011年03月


            動(dòng)態(tài)規(guī)劃,利用子問(wèn)題,向上,向下。。。


             1 #include <stdio.h>
             2 #include <string.h>
             3 
             4 #define  L  209
             5 
             6 int n, f[ L ][ L ], g[ L ][ L ];
             7 char  tri[ L ][ L ];
             8 
             9 int checkF( int i, int j ) {
            10         int a = ( (tri[i+1][j-1]==tri[i][j]) ? f[i+1][j-1] : 0 );
            11         int b = ( (tri[i+1][j+1]==tri[i][j]) ? f[i+1][j+1] : 0 );
            12         int c = ( a < b ? a : b );
            13         return f[ i ][ j ] = ( (tri[i+1][j]==tri[i][j]) ? (c+1) : 1 );
            14 }
            15 
            16 int checkG( int i, int j ) {
            17         int a = ( (tri[i-1][j-1]==tri[i][j]) ? g[i-1][j-1] : 0 );
            18         int b = ( (tri[i-1][j+1]==tri[i][j]) ? g[i-1][j+1] : 0 );
            19         int c = ( a < b ? a : b );
            20         return g[ i ][ j ] = ( (tri[i-1][j]==tri[i][j]) ? (c+1) : 1 );
            21 }
            22 
            23 int solve() {
            24         int i, j, h = 0, tmp, ans = 0;
            25         for ( i = n; i >= 1--i ) {
            26                 for ( j = n-i+1; j <= n+i-1; j+=2 ) {
            27                         tmp = checkF( i, j );
            28                         if ( tmp > h ) {
            29                                 h = tmp;
            30                         }
            31                 }
            32         }
            33         for ( i = 2; i <= n; ++i ) {
            34                 for ( j = n-i+2; j <= n+i-1; j+=2 ) {
            35                         tmp = checkG( i, j );
            36                         if ( tmp > h ) {
            37                                 h = tmp;
            38                         }
            39                 }
            40         }
            41         for ( i = 1; i <= h; ++i ) {
            42                 ans += i + i - 1;
            43         }
            44         return ans;
            45 }
            46 
            47 char next() {
            48         char ch;
            49         do {
            50                 ch = getchar();
            51         } while ( (ch<'A'|| ('Z'<ch) );
            52         return ch;
            53 }
            54 
            55 int main() {
            56         int td, cd = 0, i, j;
            57         scanf( "%d"&td );
            58         while ( td-- > 0 ) {
            59                 memset( tri, 0sizeof(tri) );
            60                 memset( f, 0sizeof(f) );
            61                 memset( g, 0sizeof(g) );
            62                 scanf( "%d"&n );
            63                 for ( i = 1; i <= n; ++i ) {
            64                         for ( j = n-i+1; j <= n+i-1++j ) {
            65                                 tri[ i ][ j ] = next();
            66                         }
            67                 }
            68                 printf( "Case %d: The largest block is %d.\n"++cd, solve() );
            69         }
            70         return 0;
            71 }
            72 


            posted on 2011-03-20 19:01 coreBugZJ 閱讀(1264) 評(píng)論(0)  編輯 收藏 引用 所屬分類(lèi): ACM

            欧美一区二区三区久久综合| 91精品国产乱码久久久久久 | 色综合久久88色综合天天 | 国产精品久久久久蜜芽| 亚洲国产精品婷婷久久| 无码精品久久久天天影视| 亚洲欧美一级久久精品| 91精品免费久久久久久久久| 久久AⅤ人妻少妇嫩草影院| 久久精品免费一区二区三区| 久久综合给合久久国产免费| 久久免费精品一区二区| 国产精品久久久久久久| 性欧美大战久久久久久久| 久久青草国产手机看片福利盒子| 久久国产精品国语对白| 国产精品久久自在自线观看| 伊人久久成人成综合网222| 9191精品国产免费久久| 久久精品99久久香蕉国产色戒| 热re99久久精品国99热| 久久国产精品免费一区| 欧美精品一本久久男人的天堂| 久久99这里只有精品国产| 老司机国内精品久久久久| 亚洲AV日韩AV永久无码久久| 青青久久精品国产免费看| 国产精品美女久久久网AV| 久久久久国产精品嫩草影院| 青青草国产97免久久费观看| 色综合久久综精品| 国产91色综合久久免费| 99久久国产热无码精品免费| 国产高潮久久免费观看| 精品久久久久中文字幕日本| 久久久一本精品99久久精品66| 国产精品99久久久久久宅男小说| 一本久久综合亚洲鲁鲁五月天亚洲欧美一区二区| 91久久婷婷国产综合精品青草| 狠狠色婷婷综合天天久久丁香| 久久精品国产精品青草|