zoukankan      html  css  js  c++  java
  • bzoj2957 楼房重建 线段树

    2957: 楼房重建

    Time Limit: 10 Sec  Memory Limit: 256 MB
    Submit: 2655  Solved: 1259
    [Submit][Status][Discuss]

    Description

      小A的楼房外有一大片施工工地,工地上有N栋待建的楼房。每天,这片工地上的房子拆了又建、建了又拆。他经常无聊地看着窗外发呆,数自己能够看到多少栋房子。
      为了简化问题,我们考虑这些事件发生在一个二维平面上。小A在平面上(0,0)点的位置,第i栋楼房可以用一条连接(i,0)和(i,Hi)的线段表示,其中Hi为第i栋楼房的高度。如果这栋楼房上任何一个高度大于0的点与(0,0)的连线没有与之前的线段相交,那么这栋楼房就被认为是可见的。
      施工队的建造总共进行了M天。初始时,所有楼房都还没有开始建造,它们的高度均为0。在第i天,建筑队将会将横坐标为Xi的房屋的高度变为Yi(高度可以比原来大---修建,也可以比原来小---拆除,甚至可以保持不变---建筑队这天什么事也没做)。请你帮小A数数每天在建筑队完工之后,他能看到多少栋楼房?

    Input

      第一行两个正整数N,M
      接下来M行,每行两个正整数Xi,Yi

    Output

      M行,第i行一个整数表示第i天过后小A能看到的楼房有多少栋

    Sample Input

    3 4
    2 4
    3 6
    1 1000000000
    1 1

    Sample Output

    1
    1
    1
    2
    数据约定
      对于所有的数据1<=Xi<=N,1<=Yi<=10^9
    N,M<=100000

    HINT

    Source

    中国国家队清华集训 2012-2013 第一天

     

    如果一个楼可以被看见,那么它前面的楼和原点连线的斜率必定小于它
    改变一个位置楼的高度只对它和它位置后的楼有影响,每次修改时在右区间更新答案

    #include<cstdio>
    #include<iostream>
    #include<algorithm>
    #include<cstring>
    #define ls u<<1
    #define rs ls|1
    #define ll long long
    #define N 100050
    using namespace std;
    int    n,m,sum[N<<2];double mx[N<<2];
    
    int calc(int u,double val,int l,int r){
        if(l==r)return mx[u]>val;
        int mid=l+r>>1;
        if(mx[ls]<=val)return calc(rs,val,mid+1,r);
        return sum[u]-sum[ls]+calc(ls,val,l,mid);
    }
    void update(int u,int l,int r,int p,double val){
        if(l==r){
            mx[u]=val;
            sum[u]=1;
            return;
        }
        int mid=l+r>>1;
        if(p<=mid)update(ls,l,mid,p,val);
        else update(rs,mid+1,r,p,val);
        mx[u]=max(mx[ls],mx[rs]);
        sum[u]=sum[ls]+calc(rs,mx[ls],mid+1,r);
    }
    int main(){
        scanf("%d%d",&n,&m);
        int x,y;
        while(m--){
            scanf("%d%d",&x,&y);
            update(1,1,n,x,(double)y/x);
            printf("%d
    ",sum[1]);
        }
        return 0;
    }
  • 相关阅读:
    openwrt 相关文章
    负载均衡相关文章
    Today's Progress
    Rodrigues formula is beautiful, but uneven to sine and cosine. (zz Berkeley's Page)
    Camera Calibration in detail
    Fundamental Matrix in Epipolar
    Camera Calibration's fx and fy do Cares in SLAM
    FilterEngine::apply
    FilterEngine 类解析——OpenCV图像滤波核心引擎(zz)
    gaussBlur
  • 原文地址:https://www.cnblogs.com/wsy01/p/8064431.html
Copyright © 2011-2022 走看看