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

            導航

            統計

            常用鏈接

            留言簿

            隨筆檔案

            文章分類

            文章檔案

            大牛們

            搜索

            最新評論

            閱讀排行榜

            評論排行榜

            欧美熟妇另类久久久久久不卡 | 99久久国语露脸精品国产| 久久成人精品| 久久久久久国产精品无码下载| 久久99精品久久久久久不卡| 久久噜噜久久久精品66| 怡红院日本一道日本久久 | 国产精品99久久久久久人| avtt天堂网久久精品| 久久久久久极精品久久久| 亚洲精品乱码久久久久久自慰| 精品国产福利久久久| 久久久久综合中文字幕| 亚洲午夜无码久久久久| 伊人久久大香线蕉影院95| 国产精品久久久久免费a∨| 久久91精品国产91久久户| 久久精品国产日本波多野结衣| 久久精品国产精品青草| 7777精品久久久大香线蕉| 久久精品国产亚洲av麻豆小说| 四虎亚洲国产成人久久精品| 国产成人精品久久二区二区| 久久精品国产清自在天天线| 久久国产精品二国产精品| 国产亚洲欧美精品久久久| 久久久久久国产精品美女| 久久亚洲精品无码观看不卡| 韩国三级大全久久网站| 久久久一本精品99久久精品66 | 色综合久久最新中文字幕| 久久一日本道色综合久久| 久久精品国产久精国产果冻传媒 | 精品视频久久久久| 久久国产亚洲高清观看| 99精品久久久久久久婷婷| 日韩精品久久久久久久电影| 久久久久人妻一区精品| 久久97久久97精品免视看秋霞| 欧美精品一本久久男人的天堂| 99久久综合狠狠综合久久止|