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

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>
            麻豆国产精品777777在线| 久久精品国产成人| 欧美黑人国产人伦爽爽爽| 国产日韩专区| 亚洲欧美国内爽妇网| 亚洲精品国产精品国自产在线| 久久精品日韩一区二区三区| 国产精品亚洲综合久久| 一二三区精品| 亚洲国产美女| 久久在线观看视频| 怡红院精品视频| 久久九九国产精品| 亚洲女人天堂av| 国产精品分类| 亚洲一二三级电影| 亚洲另类在线一区| 欧美成人综合| 亚洲国产精品久久久久秋霞不卡| 久久精品亚洲精品| 午夜国产欧美理论在线播放| 国产精品久久久久久久久久久久久久| 99国产精品视频免费观看| 亚洲高清激情| 欧美成人中文| 亚洲精品字幕| 亚洲欧洲另类| 欧美精品网站| 99精品国产在热久久婷婷| 亚洲国产精品热久久| 欧美成人精品一区二区| 亚洲精品国产欧美| 亚洲电影av| 欧美激情一区在线| 日韩一本二本av| 亚洲精品中文字幕女同| 欧美日韩免费在线观看| 这里只有视频精品| 亚洲视频1区2区| 国产精品天天摸av网| 午夜激情久久久| 午夜精品久久久久久久| 国产午夜精品麻豆| 久色婷婷小香蕉久久| 久久精品视频导航| 亚洲国产日韩精品| 亚洲三级电影在线观看| 欧美午夜精彩| 久久国产精品久久久| 久久国产天堂福利天堂| 在线免费日韩片| 亚洲高清激情| 欧美视频在线观看免费网址| 午夜精品影院在线观看| 欧美一区二区精品在线| 亚洲第一精品福利| 亚洲欧洲在线看| 欧美性猛交一区二区三区精品| 性感少妇一区| 久久久午夜精品| 99在线|亚洲一区二区| 在线亚洲国产精品网站| 国产亚洲欧美一区在线观看 | 尤物yw午夜国产精品视频明星| 欧美成年人网| 欧美日韩另类一区| 欧美在线亚洲在线| 玖玖玖国产精品| 一区二区三区久久精品| 午夜久久久久| 亚洲国产激情| 一区二区三区欧美在线观看| 国产一区二区三区久久久久久久久| 老司机精品久久| 欧美日韩精品一区二区三区| 欧美影院成人| 欧美成人精品h版在线观看| 亚洲综合丁香| 久久精品夜夜夜夜久久| 亚洲看片网站| 性高湖久久久久久久久| 亚洲黄网站黄| 亚洲欧美日韩在线| 亚洲精品一区二区三区不| 亚洲一区二区三区四区视频| 在线观看国产日韩| 一本色道久久| 亚洲高清影视| 亚洲一区在线直播| 亚洲国产成人精品久久| 亚洲视频在线观看一区| 亚洲经典在线| 亚洲欧美一区在线| 亚洲美女免费视频| 久久爱另类一区二区小说| 一本久道久久久| 久久精品国产99国产精品澳门| 在线性视频日韩欧美| 久久精视频免费在线久久完整在线看| 99在线精品视频在线观看| 欧美中文字幕在线视频| 亚洲视频中文| 嫩草国产精品入口| 久久精品中文字幕一区| 欧美日韩成人网| 麻豆av福利av久久av| 国产精品美女久久久| 亚洲黄网站在线观看| 韩日在线一区| 亚洲免费在线视频一区 二区| 亚洲精选视频免费看| 久久国产高清| 欧美亚洲在线观看| 欧美日韩国内自拍| 亚洲电影欧美电影有声小说| 国模套图日韩精品一区二区| 在线一区二区三区做爰视频网站 | 久久日韩粉嫩一区二区三区| 亚洲欧美日产图| 欧美日本高清视频| 欧美国产成人在线| 精品成人久久| 欧美亚洲一区| 欧美一区免费视频| 国产精品成人免费| 亚洲精品美女在线观看| 亚洲激情专区| 久久免费国产| 噜噜噜躁狠狠躁狠狠精品视频| 国产伦精品一区二区三| 亚洲色无码播放| 亚洲图片欧美一区| 欧美日韩在线一区二区| 亚洲区在线播放| 亚洲精品女人| 欧美99在线视频观看| 欧美国产精品中文字幕| 一色屋精品亚洲香蕉网站| 久久本道综合色狠狠五月| 久久久91精品| 国产一区二区三区在线观看精品| 香蕉久久久久久久av网站| 欧美在线电影| 国产日韩欧美电影在线观看| 亚洲欧美中文日韩在线| 久久精品噜噜噜成人av农村| 国产日韩精品一区二区三区在线| 亚洲一区二区在线视频 | 欧美福利小视频| 亚洲高清在线精品| 亚洲精品男同| 欧美人与性动交cc0o| 日韩一级不卡| 亚洲女女女同性video| 国产精品久久久久久久久久久久久 | 午夜精品美女自拍福到在线 | 99视频+国产日韩欧美| 欧美精品一区视频| 日韩一级裸体免费视频| 亚洲欧美日韩精品久久亚洲区 | 欧美午夜片欧美片在线观看| av成人激情| 亚洲欧洲av一区二区| 国产日韩高清一区二区三区在线| 先锋影院在线亚洲| 久久中文精品| 亚洲人成人一区二区三区| 欧美极品欧美精品欧美视频| 99这里只有精品| 欧美亚洲在线视频| 激情久久久久| 欧美成人在线免费观看| 99热免费精品在线观看| 欧美一级专区免费大片| 国产一区二区三区精品久久久| 久久亚洲一区二区| 亚洲日本欧美在线| 午夜精品福利视频| 韩国一区二区在线观看| 欧美国产视频在线| 亚洲午夜一区| 久久这里只有| 99re热这里只有精品免费视频| 国产精品久久久久久久久免费桃花| 性欧美在线看片a免费观看| 免费在线观看精品| 国产精品99久久久久久www| 国产情人节一区| 免费黄网站欧美| 一区二区三区成人| 久久亚洲精品网站| 夜夜爽www精品| 国产一区二区三区四区| 欧美电影电视剧在线观看| 亚洲一区二区免费视频| 欧美成人69| 亚洲欧美在线播放| 亚洲福利视频网| 国产精品日韩久久久| 免费成人av在线|