• <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 閱讀(244) 評論(0)  編輯 收藏 引用 所屬分類: 數據結構
            久久精品人人做人人妻人人玩 | 日韩欧美亚洲综合久久影院Ds| 亚洲欧洲日产国码无码久久99| 青青久久精品国产免费看| 国产福利电影一区二区三区久久久久成人精品综合| 亚洲精品99久久久久中文字幕| 亚洲成av人片不卡无码久久| 欧美国产成人久久精品| 亚洲国产成人久久综合区| 亚洲国产精品无码久久九九| 欧美日韩精品久久久久| 一本久久综合亚洲鲁鲁五月天亚洲欧美一区二区 | AA级片免费看视频久久| 久久嫩草影院免费看夜色| 婷婷久久综合九色综合绿巨人 | 狠狠色丁香久久婷婷综合图片| 午夜精品久久久久9999高清| 久久久久久久波多野结衣高潮| 奇米影视7777久久精品| A狠狠久久蜜臀婷色中文网| 久久国产精品国产自线拍免费| 精品久久久久一区二区三区| 久久只有这里有精品4| 国产亚洲综合久久系列| 久久99亚洲综合精品首页| 久久精品卫校国产小美女| 97久久久精品综合88久久| 久久99久久无码毛片一区二区| 久久人人爽人人爽人人片AV东京热| 久久国产精品无码一区二区三区| 国产精品女同一区二区久久| 久久久久se色偷偷亚洲精品av| 久久精品一区二区三区不卡| 国产精品成人久久久| 国产精品久久波多野结衣| 思思久久99热免费精品6| 精品免费tv久久久久久久| 精品久久久久成人码免费动漫| 91亚洲国产成人久久精品| 伊人久久大香线蕉亚洲| 日韩久久久久中文字幕人妻|