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

coreBugZJ

此 blog 已棄。

POJ 3277 City Horizon

  1/*
  2POJ 3277 City Horizon
  3
  4
  5----問題描述:
  6
  7Farmer John has taken his cows on a trip to the city!
  8As the sun sets, the cows gaze at the city horizon and observe the beautiful silhouettes formed by the rectangular buildings.
  9The entire horizon is represented by a number line with N (1 ≤ N ≤ 40,000) buildings.
 10Building i's silhouette has a base that spans locations Ai through Bi 
 11along the horizon (1 ≤ Ai < Bi ≤ 1,000,000,000)
 12and has height Hi (1 ≤ Hi ≤ 1,000,000,000).
 13Determine the area, in square units, of the aggregate silhouette formed by all N buildings.
 14
 15
 16----輸入:
 17
 18Line 1: A single integer: N 
 19Lines 2..N+1: Input line i+1 describes building i with three space-separated integers: Ai, Bi, and Hi
 20
 21
 22----輸出:
 23
 24Line 1: The total area, in square units, of the silhouettes formed by all N buildings
 25
 26
 27----樣例輸入:
 28
 294
 302 5 1
 319 10 4
 326 8 2
 334 6 3
 34
 35
 36----樣例輸出:
 37
 3816
 39
 40
 41----分析:
 42
 43線段樹+離散化。
 44
 45
 46*/

 47
 48
 49/******************************************************
 50AC 766MS
 51*/

 52
 53#include <iostream>
 54#include <algorithm>
 55
 56using namespace std;
 57
 58typedef  long long  Lint;
 59
 60
 61template<class T, unsigned int N>
 62class CSegTree
 63{
 64public : 
 65        void init( int loc[], int b, int e ){
 66                this->loc = loc;
 67                init( 1, b, e );
 68        }

 69        void modify( int b, int e, int h ){
 70                begin = b;
 71                end   = e;
 72                hei   = h;
 73                modify( 1 );
 74        }

 75        T query( void ){
 76                return query( 1 );
 77        }

 78
 79private : 
 80        void init( int node, int b, int e ){
 81                left[ node ]   = b;
 82                right[ node ]  = e;
 83                height[ node ] = 0;
 84                if( b + 1 < e ){
 85                        init( node << 1, b, ( b + e ) >> 1 );
 86                        init( ( node << 1 ) + 1, ( b + e ) >> 1, e );
 87                }

 88        }

 89        void modify( int node ){
 90                if( ( end <= left[ node ] ) || ( right[ node ] <= begin ) ){
 91                        return;
 92                }

 93                if( ( begin <= left[ node ] ) && ( right[ node ] <= end ) ){
 94                        height[ node ] = max( height[node], hei );
 95                        return;
 96                }

 97                if ( left[ node ] + 1 >= right[ node ] ) {
 98                        return;
 99                }

100
101                height[   node << 1 ]       = max( height[ node << 1 ],         height[ node ] );
102                height[ ( node << 1 ) + 1 ] = max( height[ ( node << 1 ) + 1 ], height[ node ] );
103                height[ node ] = 0;
104
105                modify( node << 1 );
106                modify( ( node << 1 ) + 1 );
107        }

108        T query( int node ){
109                if( height[ node ] ){
110                        return ((T)(height[node])) * (((T)(loc[right[node]])) - loc[left[node]]);
111                }

112                if( left[ node ] + 1 >= right[ node ] ){
113                        return 0;
114                }

115                return query( node << 1 ) + query( ( node << 1 ) + 1 );
116        }

117
118        typedef int IA[ N * 4 ];
119        IA  left, right, height;
120        int *loc;
121
122        int begin, end, hei;
123}
;
124
125template<class T, unsigned int N, unsigned int NT>
126class CLine
127{
128public : 
129        friend istream & operator>>( istream & is, CLine<T, N, NT> & li ){
130                is >> li.n;
131                forint i = 1; i <= li.n; ++i ){
132                        is >> li.left[ i ] >> li.right[ i ] >> li.height[ i ];
133                }

134                return is;
135        }

136        void init_tree( CSegTree<T, NT> & tree ){
137                int i, j;
138                n2 = n << 1;
139                for( j = i = 1; i <= n; ++i,++j ){
140                        line[ j ].p     = left[ i ];
141                        line[ j ].id    = i;
142                        line[ j ].bLeft = 1;
143
144                        ++j;
145                        line[ j ].p     = right[ i ];
146                        line[ j ].id    = i;
147                        line[ j ].bLeft = 0;
148                }

149                sort( line + 1, line + n2 + 1 );
150                tp = 0;
151                line[ 0 ].p = -123456;
152                for( i = 1; i <= n2; ++i ){
153                        if( line[ i ].bLeft ){
154                                left[ line[ i ].id ] = ( line[ i - 1 ].p == line[ i ].p ? tp : ++tp );
155                        }

156                        else{
157                                right[ line[ i ].id ] = ( line[ i - 1 ].p == line[ i ].p ? tp : ++tp );
158                        }

159                        loc[ tp ] = line[ i ].p;
160                }

161
162                for ( i = 1; i <= n; ++i ) {
163                        line[ i ].p     = height[ i ];
164                        line[ i ].id    = left[ i ];
165                        line[ i ].bLeft = right[ i ];
166                }

167                sort( line+1, line+n+1 );
168                for ( i = 1; i <= n; ++i ) {
169                        height[ i ] = line[ i ].p;
170                        left[ i ]   = line[ i ].id;
171                        right[ i ]  = line[ i ].bLeft;
172                }

173
174                tree.init( loc, 1, tp );
175                for( i = 1; i <= n; ++i ){
176                        tree.modify( left[ i ], right[ i ], height[ i ] );
177                }

178        }

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

186                int  p, id, bLeft;
187        }
;
188        SLine  line[ N * 2 ];
189        int    left[ N ], right[ N ], height[ N ], loc[ N * 2 ], n, n2, tp;
190}
;
191
192const int L = 40009, TL = L * 2;
193CSegTree<Lint, TL> tree;
194CLine<Lint, L, TL> line;
195
196int main(){
197        cin >> line;
198        line.init_tree( tree );
199        cout << tree.query() << endl;
200        return 0;
201}

202

posted on 2012-04-22 22:52 coreBugZJ 閱讀(630) 評論(0)  編輯 收藏 引用 所屬分類: ACMAlgorithmDataStructure課內作業(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>
            欧美黄色一级视频| 精品不卡视频| 午夜精品偷拍| 亚洲亚洲精品在线观看| 亚洲欧美视频在线观看视频| 亚洲午夜一区二区三区| 亚洲夜间福利| 久久久欧美精品| 久久久综合网| 欧美精品一级| 国产精品久久久久影院亚瑟| 国产亚洲精品一区二区| 亚洲第一在线综合在线| 亚洲美女毛片| 久久久久久穴| 日韩一二三区视频| 性欧美精品高清| 欧美人在线视频| 国产一区自拍视频| 亚洲精品国产拍免费91在线| 亚洲一区免费观看| 欧美国产日韩亚洲一区| 一区二区免费在线播放| 久久婷婷国产综合国色天香| 欧美日韩中文字幕| 最新亚洲激情| 久久久99爱| 欧美福利视频在线| 午夜国产不卡在线观看视频| 久久久一区二区| 欧美日韩国产综合新一区| 国产伊人精品| 亚洲一区二区三区精品在线观看 | 日韩视频免费| 欧美在线免费观看| 亚洲精品视频在线观看免费| 久久久www| 国产午夜精品久久久久久久| 在线视频中文亚洲| 亚洲高清免费视频| 午夜精品免费在线| 欧美午夜视频一区二区| 91久久精品日日躁夜夜躁国产| 久久国产精品毛片| 亚洲一区网站| 国产精品免费一区二区三区观看| 一区二区三区www| 亚洲人精品午夜| 欧美激情一区在线观看| 亚洲经典自拍| 亚洲国产成人精品视频| 久久综合成人精品亚洲另类欧美| 国产日韩欧美综合一区| 欧美亚洲视频在线看网址| 日韩午夜在线观看视频| 欧美日韩国产免费观看| 亚洲最快最全在线视频| 亚洲欧洲精品一区二区三区| 榴莲视频成人在线观看| 亚洲电影在线播放| 免费成人网www| 麻豆九一精品爱看视频在线观看免费| 国内成+人亚洲| 欧美 日韩 国产一区二区在线视频 | 一区二区动漫| 欧美成人精品| 免费在线观看日韩欧美| 亚洲精品麻豆| aa成人免费视频| 国产精品久久久久毛片大屁完整版| 亚洲黄网站在线观看| 亚洲国产精彩中文乱码av在线播放| 欧美夫妇交换俱乐部在线观看| 亚洲免费高清视频| 一区二区三区日韩在线观看| 国产精品第2页| 久久久精品视频成人| 蜜臀av一级做a爰片久久| 久久综合狠狠| 欧美一区二区成人| 国产精品一区三区| 久久福利视频导航| 久久免费国产精品| 亚洲欧洲在线一区| 中日韩视频在线观看| 国产精品一区二区三区久久| 久久久久高清| 欧美激情精品久久久久久久变态| 亚洲天天影视| 欧美一区在线视频| 一本色道精品久久一区二区三区| 亚洲综合大片69999| 亚洲国产综合91精品麻豆| 在线视频欧美日韩精品| 亚洲国产二区| 亚洲欧美日韩精品| 亚洲国产精品一区制服丝袜| 99国产精品私拍| 国内综合精品午夜久久资源| 亚洲国产另类久久久精品极度| 国产精品人人爽人人做我的可爱| 鲁大师成人一区二区三区| 欧美精品一区二区视频| 欧美一级在线视频| 欧美黄色一级视频| 久久免费视频一区| 国产精品第2页| 亚洲电影在线| 国内自拍亚洲| 亚洲私人影吧| 一本一本久久a久久精品综合麻豆 一本一本久久a久久精品牛牛影视 | 久久久久久久久蜜桃| 亚洲黄一区二区三区| 午夜在线成人av| 亚洲欧美日本视频在线观看| 玖玖玖国产精品| 久久精品国产精品亚洲| 欧美午夜美女看片| 日韩一级成人av| 亚洲精品中文字幕在线观看| 久久精品一二三区| 欧美在线观看一区| 欧美日韩一区二区三区在线看| 美女爽到呻吟久久久久| 国产视频综合在线| 亚洲欧美色婷婷| 亚洲一区免费网站| 欧美日韩一区在线观看视频| 亚洲激情在线观看| 最新国产乱人伦偷精品免费网站| 久久久精品视频成人| 欧美在线免费看| 国产精品欧美经典| 亚洲综合不卡| 久久国产精品一区二区| 国产视频不卡| 久久av二区| 麻豆精品精华液| 亚洲国产高潮在线观看| 欧美不卡视频| 亚洲欧洲一区| 久久综合久色欧美综合狠狠| 久热精品视频在线观看| 一区免费观看| 欧美不卡激情三级在线观看| 91久久精品一区| 亚洲一区二区三区四区五区黄| 国产精品第十页| 性欧美大战久久久久久久免费观看| 欧美一区二区黄| 国外成人在线视频| 你懂的国产精品| 99精品免费视频| 久久xxxx| 亚洲激情自拍| 国产精品福利网站| 欧美一区二区三区视频| 裸体一区二区三区| 99视频精品在线| 国产精品夜夜夜| 久久五月激情| 亚洲免费观看高清在线观看| 亚洲一区二区在线观看视频| 国产日韩欧美日韩大片| 麻豆精品视频| 亚洲另类自拍| 久久国产乱子精品免费女| 在线观看日韩av电影| 欧美日韩精品国产| 欧美伊久线香蕉线新在线| 欧美v国产在线一区二区三区| 日韩视频免费看| 国产日产欧产精品推荐色| 久久亚洲电影| 一本色道久久综合亚洲精品小说| 欧美在线黄色| 99在线精品视频在线观看| 国产一区成人| 欧美色一级片| 欧美成人精品一区| 欧美一区激情| 一区二区福利| 91久久视频| 麻豆精品网站| 欧美在线中文字幕| 亚洲网站在线看| 91久久久久久久久| 含羞草久久爱69一区| 国产精品福利影院| 欧美福利电影在线观看| 久久久女女女女999久久| 亚洲欧美日韩精品| 一区二区三区四区国产精品| 亚洲国产高潮在线观看| 另类图片国产| 久久青青草原一区二区| 欧美伊久线香蕉线新在线| 在线视频日韩精品| 日韩一区二区免费高清| 亚洲国产三级网|