• <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 閱讀(255) 評論(0)  編輯 收藏 引用 所屬分類: 數據結構
            婷婷国产天堂久久综合五月| 99久久精品免费看国产| 午夜精品久久久久久影视riav| 中文精品99久久国产| 无码日韩人妻精品久久蜜桃 | 久久精品国产亚洲AV高清热| 色欲综合久久躁天天躁蜜桃| 伊人热人久久中文字幕| 久久成人小视频| 久久91综合国产91久久精品| 欧美伊人久久大香线蕉综合| 久久综合狠狠色综合伊人| 久久九九兔免费精品6| 青青青国产成人久久111网站| 久久国产亚洲精品| 国产精品久久久久乳精品爆| 久久人人爽爽爽人久久久| 热综合一本伊人久久精品| 久久精品9988| 久久99精品久久久久子伦| 色狠狠久久综合网| 久久97久久97精品免视看秋霞| 久久夜色精品国产欧美乱| 久久无码国产专区精品| 久久久精品久久久久久| 91久久精品国产免费直播| 久久精品国产2020| 久久久久久久久久久| 久久成人小视频| 久久人人爽人人人人爽AV| 青青青青久久精品国产h久久精品五福影院1421 | 无码乱码观看精品久久| 久久九九久精品国产| 99久久精品免费| 精品乱码久久久久久夜夜嗨| 久久精品国产精品亜洲毛片| 久久国产精品二国产精品| 免费一级欧美大片久久网| 婷婷久久综合九色综合九七| 久久人人爽人人爽人人av东京热 | 久久国产成人亚洲精品影院|