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

POJ 3277 City Horizon 線段樹+離散化

Description

Farmer John has taken his cows on a trip to the city! As the sun sets, the cows gaze at the city horizon and observe the beautiful silhouettes formed by the rectangular buildings.

The entire horizon is represented by a number line with N (1 ≤ N ≤ 40,000) buildings. Building i's silhouette has a base that spans locations Ai through Bi along the horizon (1 ≤ Ai < Bi ≤ 1,000,000,000) and has height Hi (1 ≤ Hi ≤ 1,000,000,000). Determine the area, in square units, of the aggregate silhouette formed by all N buildings.

Input

Line 1: A single integer: N
Lines 2..N+1: Input line i+1 describes building i with three space-separated integers: Ai, Bi, and Hi

Output

Line 1: The total area, in square units, of the silhouettes formed by all N buildings

Sample Input

4
2 5 1
9 10 4
6 8 2
4 6 3

Sample Output

16

Hint

The first building overlaps with the fourth building for an area of 1 square unit, so the total area is just 3*1 + 1*4 + 2*2 + 2*3 - 1 = 16.

Source

    題目的意思是說:平面上有[1,40000]個建筑,每個建筑有一個區間[Ai,Bi]表示它的跨度,Hi表示其高度。要求這n個建筑的平面覆蓋面積。
由于Ai,Bi∈[1,1000000000],直接將線段[Ai,Bi]插入線段樹空間消耗太大,可以將這n條線段的2n個端點離散化到一個數組X[0...2n-1],然后再將其插入線段樹,最后求出面積。
#include <iostream>
using namespace std;

const int MAXN = 40010;
struct segment{
    
int left,right,h;
}
tree[MAXN*3];
int pos[MAXN][3],x[MAXN*2],len;

int cmp1(const void *a,const void *b){
    
return *(int *)a-*(int *)b;
}

int cmp2(const void *a,const void *b){
    
return *((int *)a+2)-*((int *)b+2);
}

int query(int h){
    
int low=0,high=len-1,mid;
    
while(low<=high){
        mid
=(low+high)>>1;
        
if(x[mid]==h) return mid;
        
else if(x[mid]>h) high=mid-1;
        
else low=mid+1;
    }

    
return -1;
}

void create(int l,int r,int index){
    tree[index].left
=l,tree[index].right=r;
    tree[index].h
=0;
    
if(r==l+1return;
    
int mid=(l+r)>>1;
    create(l,mid,
2*index);
    create(mid,r,
2*index+1);
}

void update(int l,int r,int h,int index){
    
if(h<tree[index].h) return;
    
if(l==tree[index].left && r==tree[index].right){
        tree[index].h
=h;
        
return;
    }

    
if(tree[index].h>=0 && tree[index].right>tree[index].left+1){
        tree[
2*index].h=tree[2*index+1].h=tree[index].h;
        tree[index].h
=-1;
    }

    
int mid=(tree[index].left+tree[index].right)>>1;
    
if(r<=mid)
        update(l,r,h,
2*index);
    
else if(l>=mid)
        update(l,r,h,
2*index+1);
    
else{
        update(l,mid,h,
2*index);
        update(mid,r,h,
2*index+1);
    }

}

long long cal(int index){
    
if(tree[index].h>=0)
        
return tree[index].h*(long long)(x[tree[index].right]-x[tree[index].left]);
    
else
        
return cal(2*index)+cal(2*index+1);
}

int main(){
    
int n,i,k,l,r;
    scanf(
"%d",&n);
    
for(i=len=0;i<n;i++,len+=2){
        scanf(
"%d %d %d",&pos[i][0],&pos[i][1],&pos[i][2]);
        x[len]
=pos[i][0],x[len+1]=pos[i][1];
    }

    qsort(x,
2*n,sizeof(int),cmp1);
    
for(i=1,k=0;i<2*n;i++)
        
if(x[i]!=x[i-1]) x[k++]=x[i-1];
    x[k
++]=x[i-1],len=k;
    qsort(pos,n,
3*sizeof(int),cmp2);
    create(
0,len-1,1);
    
for(i=0;i<n;i++){
        l
=query(pos[i][0]),r=query(pos[i][1]);
        update(l,r,pos[i][
2],1);
    }

    printf(
"%I64d\n",cal(1));
    
return 0;
}

posted on 2009-05-13 15:50 極限定律 閱讀(919) 評論(0)  編輯 收藏 引用 所屬分類: ACM/ICPC

<2009年4月>
2930311234
567891011
12131415161718
19202122232425
262728293012
3456789

導航

統計

常用鏈接

留言簿(10)

隨筆分類

隨筆檔案

友情鏈接

搜索

最新評論

閱讀排行榜

評論排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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久久国产精品91久久性色| 亚洲欧洲日夜超级视频| 夜夜嗨av一区二区三区四季av | 亚洲欧洲一区二区三区在线观看| 蜜臀a∨国产成人精品| 欧美大秀在线观看| 亚洲美女毛片| 午夜精品福利在线| 久久久久在线观看| 欧美精品一区二区蜜臀亚洲| 国产精品久久久久影院色老大| 国产欧美一区二区三区另类精品| 激情婷婷久久| 亚洲一区二区三区四区在线观看| 欧美影院一区| 亚洲欧洲日本在线| 欧美在线免费| 欧美视频日韩| 亚洲福利一区| 久久国产精品一区二区三区| 亚洲欧洲精品一区二区| 欧美一区二区三区播放老司机| 久久夜色撩人精品| 国产精品亚洲第一区在线暖暖韩国| 一区视频在线| 欧美一区二区在线免费观看| 欧美大片一区| 久久国产婷婷国产香蕉| 欧美天天影院| 亚洲久色影视| 欧美.www| 久久精品30| 国产精品jvid在线观看蜜臀| 91久久精品国产91性色tv| 久久九九有精品国产23| 亚洲视屏一区| 欧美日韩国产首页| 亚洲日本欧美日韩高观看| 久久岛国电影| 亚洲欧美中文另类| 国产精品日日做人人爱 | 在线观看欧美| 久久久99免费视频| 亚洲欧美日韩国产中文| 欧美日韩一区二区免费在线观看| 亚洲国产精品久久久久婷婷老年 | 久久精品91久久香蕉加勒比| 一区二区高清在线| 欧美色精品在线视频| 亚洲精品一区二区三| 玖玖玖国产精品| 久久久久久伊人| 国内精品模特av私拍在线观看| 欧美一区二区精品在线| 亚洲色图在线视频| 国产精品成人一区二区三区夜夜夜| 欧美日韩在线精品一区二区三区| 日韩午夜在线电影| 亚洲毛片一区二区| 欧美日韩在线一二三| 亚洲视屏在线播放| 亚洲一区久久久| 国产视频在线观看一区二区| 久久久久久999| 久久精品视频亚洲| 亚洲国产第一| 亚洲精品国产精品乱码不99| 欧美极品色图| 亚洲欧美成人精品| 午夜精品久久久久久久| 国产欧美日本| 米奇777在线欧美播放| 老司机免费视频一区二区三区| 亚洲欧洲精品一区二区| 亚洲精品美女91| 国产乱码精品1区2区3区| 久久久精品国产一区二区三区 | 亚洲欧美另类中文字幕| 香蕉久久国产| 亚洲毛片在线观看.| 一区二区日本视频| 国产在线不卡| 亚洲区在线播放| 国产麻豆综合| 欧美激情一区二区三区在线视频| 欧美全黄视频| 久久综合色婷婷| 欧美日韩一二三区| 久久网站免费| 欧美性事在线| 欧美国产日韩视频| 国产精一区二区三区| 欧美国产日韩一二三区| 国产精品色一区二区三区| 免费在线播放第一区高清av| 欧美三日本三级少妇三99 | 日韩午夜在线电影| 韩日成人在线| 亚洲一区二区网站| 99热这里只有成人精品国产| 欧美在线观看视频在线| 在线视频欧美一区| 另类专区欧美制服同性| 亚洲欧美成人在线| 欧美精品一区二区三区四区| 久久久亚洲国产美女国产盗摄| 欧美激情中文字幕一区二区| 久久久噜噜噜久久狠狠50岁| 欧美日韩一区二区欧美激情| 亚洲电影毛片| 精品福利电影| 欧美一区激情| 欧美在线免费观看亚洲| 欧美精品三级| 欧美高清视频| 在线成人性视频| 欧美一级片一区| 国产精品久久久免费| 亚洲欧洲日夜超级视频| 国产综合色在线视频区| 亚洲欧美激情精品一区二区| 一二三区精品福利视频| 久久一二三国产| 久热国产精品| 亚洲二区免费| 久久亚洲春色中文字幕| 久久免费的精品国产v∧| 国产精品一区二区久久久久| 一区二区三区高清| 亚洲女人av| 国产精品久久看| 亚洲免费影视| 久久久久久69| 亚洲国产91| 欧美大片免费观看在线观看网站推荐| 欧美77777| 亚洲精品乱码久久久久久蜜桃麻豆 | 99re6热在线精品视频播放速度| 亚洲国产免费看| 欧美成人小视频| 亚洲精品综合在线| 宅男噜噜噜66一区二区66| 欧美三级在线视频| 亚洲伊人网站| 裸体女人亚洲精品一区| 亚洲第一福利社区| 欧美1区3d| 在线亚洲免费| 久久久久久久久一区二区| 韩国一区二区三区在线观看| 久久亚洲高清| aⅴ色国产欧美| 久久精品亚洲精品| 亚洲黄色在线| 国产精品九九| 久热爱精品视频线路一| 亚洲区一区二| 久久国产精品一区二区三区| 国产一区深夜福利| 免费日韩成人| 亚洲欧美国产日韩天堂区| 欧美中文在线观看| 亚洲欧洲另类| 国产精品久久久久一区二区三区共| 亚洲欧美日韩精品在线| 欧美大片一区| 亚洲欧美另类国产| 在线电影院国产精品| 欧美三日本三级少妇三2023| 欧美一区二区三区视频免费| 亚洲高清视频中文字幕| 欧美一区二区免费| 99re成人精品视频| 国产午夜亚洲精品理论片色戒| 欧美sm视频| 欧美中文字幕不卡| 一区二区三区精品| 欧美不卡视频| 久久国产精彩视频| 一区二区三区免费观看| 在线观看亚洲视频啊啊啊啊| 欧美精品网站| 久久欧美肥婆一二区| 午夜亚洲视频| 亚洲精品小视频| 1000精品久久久久久久久 | 亚洲国产精品一区二区三区| 欧美三级在线播放| 欧美成人日本| 久久成人精品无人区| 亚洲视频观看| 亚洲免费高清| 亚洲国产成人在线播放| 久久女同精品一区二区| 欧美一区二区三区四区高清|