• <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 閱讀(128) 評論(0)  編輯 收藏 引用 所屬分類: POJ

            <2010年9月>
            2930311234
            567891011
            12131415161718
            19202122232425
            262728293012
            3456789

            導航

            統計

            常用鏈接

            留言簿

            隨筆檔案

            文章分類

            文章檔案

            大牛們

            搜索

            最新評論

            閱讀排行榜

            評論排行榜

            久久99热这里只有精品66| 国产三级久久久精品麻豆三级| 少妇精品久久久一区二区三区| 亚洲αv久久久噜噜噜噜噜| 亚洲精品乱码久久久久久按摩 | 久久久久一本毛久久久| 亚洲&#228;v永久无码精品天堂久久| 国内精品久久久久影院亚洲| 人妻精品久久久久中文字幕69| 91精品国产高清久久久久久91| 无码精品久久一区二区三区| 久久99亚洲网美利坚合众国| 久久成人精品| 99久久精品费精品国产一区二区 | 久久精品国产一区二区三区不卡| 久久99热这里只频精品6| 九九99精品久久久久久| 女人高潮久久久叫人喷水| 99久久久精品| 久久永久免费人妻精品下载| 亚洲а∨天堂久久精品| 久久久久久久99精品免费观看| 超级97碰碰碰碰久久久久最新| 国产精品欧美久久久久无广告 | 国产精品一区二区久久国产| 亚洲国产成人精品久久久国产成人一区二区三区综 | 精品无码久久久久国产| 99久久香蕉国产线看观香| 久久久久99精品成人片三人毛片| 久久国产乱子伦免费精品| 久久精品国产99国产精品亚洲| 亚洲精品高清一二区久久| 国产亚州精品女人久久久久久 | 乱亲女H秽乱长久久久| 久久夜色精品国产亚洲av| 国产午夜福利精品久久| 91精品无码久久久久久五月天 | 伊人久久亚洲综合影院| 欧洲性大片xxxxx久久久| 久久久久国产精品麻豆AR影院 | 国产午夜福利精品久久2021|