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

            gzwzm06

              C++博客 :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
              1 隨筆 :: 52 文章 :: 17 評論 :: 0 Trackbacks
              1#include <stdio.h>
              2#include <memory.h>
              3
              4const long max = 200001 ;
              5
              6struct NODE
              7{
              8    int color ;
              9    int start ;
             10    int end ;
             11    struct NODE *leftc ;
             12    struct NODE *rightc ;
             13    
             14    void BuildSTree( int s, int e ) ;
             15    void Insert( int s, int e, int col ) ;
             16    void CountColor( int s, int e ) ;
             17}
            ;
             18
             19NODE STree[max] ;
             20NODE *root ;
             21
             22long num = 0 ;
             23bool Color[31] ;
             24
             25void NODE::BuildSTree( int s , int e )
             26{
             27    start = s ;
             28    end = e ;
             29    color = 1 ;
             30
             31    if ( s == e )
             32    {
             33        leftc = NULL ;
             34        rightc = NULL ;
             35        return ;
             36    }

             37
             38    int mid = ( s + e ) >> 1 ;
             39
             40    leftc = &STree[num++] ;
             41    rightc = &STree[num++] ;
             42
             43    leftc->BuildSTree( s , mid ) ;
             44    rightc->BuildSTree( mid + 1 , e ) ;
             45}

             46
             47void NODE::Insert( int s , int e , int col )
             48{
             49    if ( col == color )
             50    {
             51        return ;
             52    }

             53    if ( s == start && e == end )
             54    {
             55        color = col ;
             56        return ;
             57    }

             58    if ( color > 0 )
             59    {
             60        leftc->color = color ;
             61        rightc->color = color ;
             62    }

             63    int mid = ( start + end ) >> 1 ;
             64
             65    color = -1 ;
             66
             67    if ( mid >= e )
             68    {
             69        leftc->Insert( s, e, col ) ;
             70    }

             71    else if ( mid < s ) {
             72        rightc->Insert(  s, e, col ) ;
             73    }

             74    else {
             75        leftc->Insert( s, mid, col ) ;
             76        rightc->Insert( mid + 1, e, col ) ;
             77    }

             78}

             79
             80void Paint( int s , int e , int col )
             81{
             82    root->Insert( s, e, col ) ;
             83}

             84
             85void NODE::CountColor( int s, int e )
             86{
             87    if ( color > 0 )
             88    {
             89        Color[color] = true ;
             90        return ;
             91    }

             92
             93    int mid = ( start + end ) >> 1 ;
             94
             95    if ( mid >= e )
             96    {
             97        leftc->CountColor( s, e ) ;
             98    }

             99    else if ( mid < s ) {
            100        rightc->CountColor( s, e ) ;
            101    }

            102    else {
            103        leftc->CountColor( s, mid ) ;
            104        rightc->CountColor( mid + 1, e ) ;
            105    }
              
            106}

            107
            108int main()
            109{
            110    long L , T , O , s , e ;
            111    char cmd ;
            112    int col ;
            113
            114    scanf("%ld %ld %ld\n"&L, &T, &O) ;
            115
            116    root = &STree[num++] ;
            117    root->BuildSTree( 1 , 100000 ) ;
            118
            119    for ( int i = 0 ; i < O ; i++ )
            120    {
            121        scanf("%c"&cmd) ;
            122
            123        while ( cmd != 'C' && cmd != 'P' )
            124        {
            125            scanf("%c"&cmd) ;
            126        }

            127
            128        if ( cmd == 'C' )
            129        {
            130            scanf("%ld %ld %d"&s, &e, &col) ;
            131            
            132            if ( s > e )
            133            {
            134                long t = s ; s = e ; e = t ;
            135            }

            136
            137            Paint( s, e, col ) ;
            138        }

            139        else if ( cmd == 'P' )
            140        {
            141            scanf("%ld %ld"&s, &e) ;
            142            
            143            if ( s > e )
            144            {
            145                long t = s ; s = e ; e = t ;
            146            }

            147
            148            root->CountColor( s, e ) ;
            149
            150            int ans = 0 ;
            151            
            152            for ( int j = 1 ; j < 31 ; j++ )
            153            {
            154                if ( Color[j] )
            155                {
            156                    ans++ ;
            157                }

            158            }

            159
            160            memset(Color, 0sizeof(Color)) ;
            161
            162            printf("%d\n", ans) ;
            163        }

            164    }

            165
            166    return 0 ;
            167}

            168
            posted on 2008-11-17 22:55 閱讀(248) 評論(0)  編輯 收藏 引用 所屬分類: 數據結構
            欧美一级久久久久久久大| 欧美激情精品久久久久久久| 香蕉久久av一区二区三区| 亚洲AV无码久久| 亚洲一区中文字幕久久| 久久精品免费大片国产大片| 欧美精品乱码99久久蜜桃| 色婷婷综合久久久久中文| 久久国产精品久久久| 午夜福利91久久福利| 亚洲AV日韩AV永久无码久久| 欧美亚洲另类久久综合| 久久综合偷偷噜噜噜色| 国产精品久久久久影院嫩草| 亚洲精品国产自在久久| 国产精品久久久福利| 思思久久好好热精品国产| 国产精品一区二区久久| 四虎影视久久久免费观看| 久久精品国产清高在天天线| 性做久久久久久免费观看| 久久久国产精品网站| 亚洲AV乱码久久精品蜜桃| 久久国产乱子伦精品免费午夜| 无码专区久久综合久中文字幕| 久久久久噜噜噜亚洲熟女综合| 97热久久免费频精品99| 色婷婷久久综合中文久久一本| 久久免费美女视频| 久久婷婷激情综合色综合俺也去 | 天堂无码久久综合东京热| 国产精品国色综合久久| 亚洲精品乱码久久久久久久久久久久 | 91精品国产高清91久久久久久| 久久久久久伊人高潮影院| 欧美日韩精品久久久免费观看| 国产成人久久久精品二区三区| 久久亚洲国产欧洲精品一| 国产精品免费看久久久| 青草国产精品久久久久久| 国内精品综合久久久40p|