青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

coreBugZJ

此 blog 已棄。

POJ 2528 Mayor's posters

  1/*
  2POJ 2528 Mayor's posters
  3
  4
  5----問題描述:
  6
  7The citizens of Bytetown, AB, could not stand that the candidates in the mayoral election campaign have been placing their electoral posters at all places at their whim.
  8The city council has finally decided to build an electoral wall for placing the posters and introduce the following rules: 
  9Every candidate can place exactly one poster on the wall. 
 10All posters are of the same height equal to the height of the wall;
 11the width of a poster can be any integer number of bytes (byte is the unit of length in Bytetown).
 12The wall is divided into segments and the width of each segment is one byte.
 13Each poster must completely cover a contiguous number of wall segments.
 14
 15They have built a wall 10000000 bytes long (such that there is enough place for all candidates).
 16When the electoral campaign was restarted, the candidates were placing their posters on the wall and their posters differed widely in width.
 17Moreover, the candidates started placing their posters on wall segments already occupied by other posters.
 18Everyone in Bytetown was curious whose posters will be visible (entirely or in part) on the last day before elections.
 19Your task is to find the number of visible posters when all the posters are placed given the information about posters' size,
 20their place and order of placement on the electoral wall.
 21
 22
 23----輸入:
 24
 25The first line of input contains a number c giving the number of cases that follow.
 26The first line of data for a single case contains number 1 <= n <= 10000. The subsequent n lines describe the posters in the order in which they were placed. The i-th line among the n lines contains two integer numbers li and ri which are the number of the wall segment occupied by the left end and the right end of the i-th poster, respectively. We know that for each 1 <= i <= n, 1 <= li <= ri <= 10000000. After the i-th poster is placed, it entirely covers all wall segments numbered li, li+1 , , ri.
 27
 28
 29----輸出:
 30
 31For each input data set print the number of visible posters after all the posters are placed.
 32
 33
 34----樣例輸入:
 35
 361
 375
 381 4
 392 6
 408 10
 413 4
 427 10
 43
 44
 45----樣例輸出:
 46
 474
 48
 49
 50----分析:
 51
 52線段樹。
 53
 54
 55*/

 56
 57
 58
 59#include <iostream>
 60#include <algorithm>
 61
 62using namespace std;
 63
 64template<unsigned int N>
 65class CSegTree
 66{
 67public : 
 68        void init( int b, int e ){
 69                init( 1, b, e );
 70        }

 71        void modify( int b, int e, int d ){
 72                begin = b;
 73                end   = e;
 74                data  = d;
 75                modify( 1 );
 76        }

 77        int query( void ){
 78                memset( visible, 0sizeof( visible ) );
 79                query( 1 );
 80                data = 0;
 81                forint i = 1; i < N; ++i ){
 82                        if( visible[ i ] ){
 83                                ++data;
 84                        }

 85                }

 86                return data;
 87        }

 88
 89private : 
 90        void init( int node, int b, int e ){
 91                left[ node ]  = b;
 92                right[ node ] = e;
 93                id[ node ]    = 0;
 94                if( b < e ){
 95                        init( node << 1, b, ( b + e ) >> 1 );
 96                        init( ( node << 1 ) + 1, ( ( b + e ) >> 1 ) + 1, e );
 97                }

 98        }

 99        void modify( int node ){
100                if( ( end < left[ node ] ) || ( right[ node ] < begin ) ){
101                        return;
102                }

103                if( data == id[ node ] ){
104                        return;
105                }

106                if( ( begin <= left[ node ] ) && ( right[ node ] <= end ) ){
107                        id[ node ] = data;
108                        return;
109                }

110                if( id[ node ] ){
111                        id[ node << 1 ] = id[ ( node << 1 ) + 1 ] = id[ node ];
112                        id[ node ] = 0;
113                }

114                modify( node << 1 );
115                modify( ( node << 1 ) + 1 );
116                if( id[ node << 1 ] == id[ ( node << 1 ) + 1 ] ){
117                        id[ node ] = id[ node << 1 ];
118                }

119        }

120        void query( int node ){
121                if( id[ node ] ){
122                        visible[ id[ node ] ] = true;
123                        return;
124                }

125                if( left[ node ] >= right[ node ] ){
126                        return;
127                }

128                query( node << 1 );
129                query( ( node << 1 ) + 1 );
130        }

131
132        enum{ L = N * 3 };
133        typedef int IA[ L ];
134        IA left, right, id;
135        bool visible[ N ];
136
137        int begin, end, data;
138        
139}
;
140
141template<unsigned int N, unsigned int NT>
142class CLine
143{
144public : 
145        friend istream & operator>>( istream & is, CLine<N,NT> & li ){
146                is >> li.n;
147                forint i = 1; i <= li.n; ++i ){
148                        is >> li.left[ i ] >> li.right[ i ];
149                }

150                return is;
151        }

152        void init_tree( CSegTree<NT> & tree ){
153                int i, j;
154                n2 = n << 1;
155                for( j = i = 1; i <= n; ++i,++j ){
156                        line[ j ].p     = left[ i ];
157                        line[ j ].id    = i;
158                        line[ j ].bLeft = true;
159
160                        ++j;
161                        line[ j ].p     = right[ i ];
162                        line[ j ].id    = i;
163                        line[ j ].bLeft = false;
164                }

165                sort( line + 1, line + n2 + 1 );
166                tp = 0;
167                line[ 0 ].p = -123456;
168                for( i = 1; i <= n2; ++i ){
169                        if( line[ i ].bLeft ){
170                                left[ line[ i ].id ] = ( line[ i - 1 ].p == line[ i ].p ? tp : ++tp );
171                        }

172                        else{
173                                right[ line[ i ].id ] = ( line[ i - 1 ].p == line[ i ].p ? tp : ++tp );
174                        }

175                }

176                tree.init( 1, tp );
177                for( i = 1; i <= n; ++i ){
178                        tree.modify( left[ i ], right[ i ], i );
179                }

180        }

181
182private : 
183        struct SLine
184        {
185                bool operator<const SLine & b ){
186                        return p < b.p;
187                }

188                int  p, id;
189                bool bLeft;
190        }
;
191        SLine  line[ N * 2 ];
192        int    left[ N ], right[ N ], n, n2, tp;
193}
;
194
195const int L = 30009, TL = L * 2;
196CSegTree<TL> tree;
197CLine<L,TL> line;
198
199int main(){
200        int td;
201        cin >> td;
202        while( td-- ){
203                cin >> line;
204                line.init_tree( tree );
205                cout << tree.query() << endl;
206        }

207        return 0;
208}

209

posted on 2012-04-22 22:50 coreBugZJ 閱讀(566) 評(píng)論(0)  編輯 收藏 引用 所屬分類: ACMAlgorithmDataStructure課內(nèi)作業(yè)

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            国产亚洲一区在线| 韩国女主播一区| 99精品视频免费观看视频| 老司机午夜精品视频在线观看| 亚洲一区二区三区四区在线观看| 国产精品成人一区二区三区夜夜夜| 一区二区av在线| 日韩亚洲欧美高清| 欧美日韩一区二区欧美激情| 亚洲桃花岛网站| 中国女人久久久| 国产精品丝袜久久久久久app| 午夜精品一区二区三区电影天堂| 亚洲制服少妇| 国产一区二区精品丝袜| 久久亚洲私人国产精品va媚药| 久久国产精品久久久久久电车| 一区二区三区在线高清| 免费在线观看精品| 欧美激情综合色| 亚洲男女毛片无遮挡| 亚洲综合日本| 亚洲国产精品va| 日韩一级黄色大片| 国产日本欧美一区二区三区| 美女黄色成人网| 欧美日韩四区| 久久综合精品一区| 欧美激情中文字幕乱码免费| 欧美一级成年大片在线观看| 久久久久久夜精品精品免费| 99精品视频免费在线观看| 亚洲欧美精品在线观看| 亚洲成人在线视频播放| 日韩午夜在线视频| 在线成人免费视频| 亚洲美女免费精品视频在线观看| 国产日韩精品一区二区| 欧美黑人在线观看| 国产日韩欧美电影在线观看| 免播放器亚洲一区| 国产精品福利片| 欧美第一黄色网| 国产精品一区二区在线观看| 欧美激情一区二区| 国产日本欧美视频| 亚洲精品孕妇| 亚洲福利专区| 亚洲一区日韩在线| 亚洲乱码国产乱码精品精可以看| 午夜亚洲性色福利视频| 99xxxx成人网| 免费观看一级特黄欧美大片| 欧美在线视频一区二区三区| 欧美韩日一区二区| 美女黄毛**国产精品啪啪| 国产精品爽爽爽| 国产精品免费看| 亚洲日韩欧美视频一区| 亚洲第一福利视频| 午夜精品www| 香蕉乱码成人久久天堂爱免费| 欧美日韩亚洲一区二区| 欧美黄色一区| 最新国产乱人伦偷精品免费网站| 久久婷婷久久| 欧美bbbxxxxx| 亚洲电影中文字幕| 久久一二三区| 欧美国产日韩a欧美在线观看| 伊人久久综合| 老司机67194精品线观看| 美女图片一区二区| 狠狠色狠狠色综合日日小说| 欧美与黑人午夜性猛交久久久| 欧美在线一级视频| 国产亚洲一区二区三区| 久久国产天堂福利天堂| 久久免费少妇高潮久久精品99| 国产综合久久久久影院| 欧美一区三区三区高中清蜜桃 | 久久影院午夜论| 美女成人午夜| 日韩一级大片在线| 欧美日韩三级电影在线| 夜夜夜久久久| 欧美一区午夜视频在线观看| 国产真实久久| 久久久天天操| 亚洲黄色影片| 亚洲欧美电影院| 国产日韩欧美一区二区| 欧美中文在线免费| 欧美激情一区二区三区在线视频观看 | 欧美日韩成人综合在线一区二区| 91久久精品网| 午夜精品免费| 亚洲第一伊人| 欧美日韩国产三区| 香蕉亚洲视频| 亚洲欧洲日夜超级视频| 午夜欧美精品| 亚洲高清资源| 国产精品va| 久久久久久久久久久久久久一区 | 亚洲一级片在线观看| 国产精品亚洲欧美| 久久综合影音| 亚洲免费影院| 亚洲国产欧美一区| 午夜一区二区三区在线观看| 亚洲国产精品一区二区第一页| 欧美午夜精品电影| 老司机67194精品线观看| 亚洲视频免费看| 女仆av观看一区| 午夜精品影院| 99精品久久久| 精品盗摄一区二区三区| 欧美麻豆久久久久久中文| 午夜精品亚洲一区二区三区嫩草| 欧美国产日韩一区二区三区| 欧美一级视频免费在线观看| 亚洲毛片视频| 激情偷拍久久| 国产伦精品一区二区三区免费| 欧美高清视频在线播放| 久久精品欧洲| 亚洲免费中文字幕| 99re热精品| 亚洲国产精品成人一区二区| 久久久五月天| 久久国产精品黑丝| 午夜精品一区二区三区在线视 | 国产亚洲人成网站在线观看 | 亚洲免费在线电影| 亚洲乱码视频| 亚洲成色精品| 欧美成人视屏| 久久综合九色综合欧美就去吻| 欧美在线播放高清精品| 亚洲午夜av| 在线亚洲精品福利网址导航| 亚洲国产成人精品女人久久久| 国产一区二区欧美| 国产人妖伪娘一区91| 国产精品视频网址| 国产精品亚洲产品| 国产精品久久国产三级国电话系列| 欧美激情免费在线| 欧美成人a视频| 欧美电影专区| 欧美激情欧美激情在线五月| 欧美国产日韩精品| 欧美电影在线| 欧美日韩久久| 国产精品久久久久999| 欧美视频中文一区二区三区在线观看| 欧美精品一区二区三区久久久竹菊 | 老司机精品视频网站| 美女免费视频一区| 欧美激情第五页| 亚洲精品在线电影| 一区二区三区不卡视频在线观看 | 久久精品国产综合精品| 久久gogo国模裸体人体| 久久性色av| 亚洲片在线资源| 日韩午夜激情电影| 亚洲男女自偷自拍| 欧美专区第一页| 欧美成年人视频网站| 欧美日韩另类丝袜其他| 国产精品一区在线观看| 精品盗摄一区二区三区| 亚洲人成网站色ww在线| 亚洲欧美成人网| 久久精品网址| 亚洲人成人一区二区三区| 夜夜嗨av一区二区三区网页 | 亚洲日本在线观看| 亚洲一区二区三区精品在线观看 | 欧美一区二区在线| 另类尿喷潮videofree| 欧美日韩精品一区二区天天拍小说| 国产精品igao视频网网址不卡日韩| 国产日本欧美一区二区| 亚洲精品国产日韩| 亚洲一区二区三区在线| 久久男人av资源网站| 亚洲精品一区在线| 久久精品国产96久久久香蕉| 欧美日韩国产三级| 精品动漫3d一区二区三区| 一区二区三区.www| 麻豆91精品| 亚洲欧美日产图| 欧美精选午夜久久久乱码6080| 国产一区二区精品在线观看| 中文精品99久久国产香蕉|