• <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>

            POJ 3277 City Horizon

              1 #include <iostream>
              2 #include <algorithm>
              3 #include <cstdio>
              4 using namespace std;
              5 
              6 const int MaxSize=90001;
              7 
              8 struct Node
              9 {    int left,right,mid;
             10     int hight;
             11 };
             12 
             13 
             14 struct Building
             15 {    int left,right,hight;
             16 }b[40001];
             17 bool cmp(Building a,Building b)
             18 {    return a.hight>b.hight;}
             19 
             20 Node itree[3*MaxSize];
             21 
             22 void Build(int l,int r,int num)
             23 {    itree[num].left=l;
             24     itree[num].right=r;
             25     itree[num].mid=(l+r)/2;
             26     itree[num].hight=0;
             27 
             28     if(l+1!=r)
             29     {    Build(l,itree[num].mid,num<<1);
             30         Build(itree[num].mid,r,(num<<1)+1);
             31     }
             32 }
             33 
             34 void Insert(int l,int r,int h,int num)
             35 {    if(itree[num].left==l&&itree[num].right==r)
             36     {    if(h>itree[num].hight)
             37             itree[num].hight=h;
             38         return;
             39     }
             40     if(r<=itree[num].mid)
             41         Insert(l,r,h,num<<1);
             42     else if(l>=itree[num].mid)
             43         Insert(l,r,h,(num<<1)+1);
             44     else
             45     {    Insert(l,itree[num].mid,h,num<<1);
             46         Insert(itree[num].mid,r,h,(num<<1)+1);
             47     }
             48 }
             49 
             50 
             51 int hash[MaxSize];
             52 
             53 long long Calc(int h,int num)
             54 {    if(h>itree[num].hight)
             55         itree[num].hight=h;
             56     if(itree[num].left+1==itree[num].right)
             57     {    return (long long)itree[num].hight*(hash[itree[num].right]-hash[itree[num].left]);
             58     }
             59     return Calc(itree[num].hight,num<<1)+Calc(itree[num].hight,(num<<1)+1);
             60 }
             61 
             62 int BinarySearch(int *from,int *end,int key)
             63 {    int low=0,high=end-from;
             64     int mid=(low+high)/2;
             65     while(low<=high)
             66         if(from[mid]==key)
             67             return mid;
             68         else if(from[mid]>key)
             69         {    high=mid-1;                
             70             mid=(high+low)/2;                
             71         }    
             72         else        
             73         {    low=mid+1;        
             74             mid=(high+low)/2;                
             75         }            
             76     return mid;
             77 }
             78 
             79 
             80 int main()
             81 {
             82     int N;
             83     scanf("%d",&N);
             84     for(int i=0;i<N;i++)
             85     {    scanf("%d%d%d",&b[i].left,&b[i].right,&b[i].hight);
             86         hash[i<<1]=b[i].left;
             87         hash[(i<<1)+1]=b[i].right;
             88     }
             89     int hlen=0;
             90     sort(hash,hash+2*N);
             91     sort(b,b+N,cmp);
             92     for(int i=0;i<2*N-1;i++)
             93         if(hash[i]!=hash[i+1])
             94             hash[++hlen]=hash[i+1];
             95     hlen++;
             96     Build(0,hlen,1);
             97     for(int i=0;i<N;i++)
             98     {    int l=BinarySearch(hash,hash+hlen,b[i].left);
             99         int r=BinarySearch(hash,hash+hlen,b[i].right);
            100         Insert(l,r,b[i].hight,1);
            101     }
            102     cout<<Calc(0,1)<<endl;
            103     //printf("%I64d\n",Calc(0,1));
            104     return 0;    
            105 }

            posted on 2010-08-29 11:42 ZAKIR 閱讀(133) 評論(0)  編輯 收藏 引用 所屬分類: POJ

            <2025年7月>
            293012345
            6789101112
            13141516171819
            20212223242526
            272829303112
            3456789

            導航

            統計

            常用鏈接

            留言簿

            隨筆檔案

            文章分類

            文章檔案

            大牛們

            搜索

            最新評論

            閱讀排行榜

            評論排行榜

            久久综合中文字幕| 久久久久久久波多野结衣高潮| 亚洲精品乱码久久久久久自慰| 亚洲精品乱码久久久久久蜜桃| 亚洲精品tv久久久久久久久久| 亚洲国产另类久久久精品| 国产成人综合久久综合 | 久久久久久久久久久久久久| 午夜欧美精品久久久久久久| 国产福利电影一区二区三区久久久久成人精品综合 | 国产精品日韩欧美久久综合| 亚洲欧美一区二区三区久久| 国产精品久久久久影视不卡| 中文字幕精品无码久久久久久3D日动漫| 亚洲中文字幕无码久久2020 | 久久这里都是精品| 久久亚洲精品视频| 久久久噜噜噜久久中文福利| 久久中文字幕人妻丝袜| 国产精品免费看久久久香蕉| 久久亚洲AV成人出白浆无码国产| 久久久久免费视频| 国产成人久久久精品二区三区| 97r久久精品国产99国产精| 国产A三级久久精品| 久久无码国产| 青青草国产97免久久费观看| 99久久www免费人成精品| 狠狠狠色丁香婷婷综合久久俺| 亚洲精品无码久久久影院相关影片| 亚洲国产成人精品女人久久久 | 精品国产热久久久福利| 久久se精品一区二区| 精品国产乱码久久久久久郑州公司| 久久精品一本到99热免费| 久久午夜综合久久| 亚洲精品国产综合久久一线| 综合久久一区二区三区| 亚洲精品乱码久久久久久| 伊人久久大香线蕉综合影院首页| 久久综合久久美利坚合众国|