zoukankan      html  css  js  c++  java
  • 楼房重建

     

    题源

    LELElele01题解     Nantf题解


     

    题面

     


     

     

    看到的楼房数肯定是不降的

    于是我们考虑上线段树

     

     

    考虑Query

    左边的肯定能一览无余。所以若右边没有左边最高的高,就看不到了;反之则加上右边的答案

     

    考虑Update

    如果新增的没有原来的高,卵用没有,把极值改了就好了

    如果新增的比原来的高,它左边的仍然能看到,减去它右边原来能看到,后来没它高的一段

     

    考虑精度

    float是不够的,而且要注意中途 double / long double 不能断

    否则就只有和爆扫一样的40分


     

    Code :  813ms /  10.74MB /  1.02KB 

     1 #include<stdio.h>
     2 #define ld long double
     3 #define mid ((l+r)>>1)
     4 #define lson (rt<<1)
     5 #define rson (rt<<1|1)
     6 #define For(i,a,b) for(register int i=(a);i<=(b);i++)
     7 using namespace std;
     8 const int maxn=1e5+10;
     9 int n,q;
    10 struct T{
    11     int ans;ld xl;
    12 }tree[maxn<<2];
    13 inline ld max(ld a,ld b){return a>b?a:b;}
    14 inline int query(int l,int r,int rt,ld now){
    15     if(tree[rt].xl<=now) return 0;
    16     if(l==r) return tree[rt].xl>now;
    17     if(tree[lson].xl<now){
    18         return query(mid+1,r,rson,now);
    19     }
    20     return query(l,mid,lson,now)+tree[rt].ans-tree[lson].ans;
    21 }
    22 inline void update(int l,int r,int rt,int wnt,ld now){
    23     if(l==wnt&&r==wnt){
    24         tree[rt].xl=now,tree[rt].ans=1;
    25         return ;
    26     }
    27     if(wnt<=mid){
    28         update(l,mid,lson,wnt,now);
    29     }else{
    30         update(mid+1,r,rson,wnt,now);
    31     }
    32     tree[rt].xl=max(tree[lson].xl,tree[rson].xl);
    33     tree[rt].ans=query(mid+1,r,rson,tree[lson].xl)+tree[lson].ans;
    34 }
    35 signed main(){
    36     scanf("%d%d",&n,&q);
    37     while(q--){
    38         int x,y;scanf("%d%d",&x,&y);
    39         update(1,n,1,x,(ld)1.00*y/x);
    40         printf("%d
    ",tree[1].ans);
    41     }
    42 }

     

  • 相关阅读:
    java路径两种写法"/"和"\"以及 ./和../以及/之间的区别?
    几张图轻松理解String.intern()和String
    面向对象编程三大特性------封装、继承、多态
    markdown操作手册
    index索引的一些简单理解
    Mac 上flink的安装与启动
    C语言实现俄罗斯方块游戏
    Maven_学习、搭建、应用
    PHP学习笔记---高级知识
    软件设计师笔记---寻址方式
  • 原文地址:https://www.cnblogs.com/monyhzc/p/12021431.html
Copyright © 2011-2022 走看看