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

    线段树更新,合并左右节点时利用递归函数

    #include<iostream>
    #include<cstdio>
    #include<cmath>
    #include<cstring>
    #include<string>
    #include<queue>
    #include<map>
    #include<set>
    #include<stack>
    #include<list>
    #include<ctime>
    #include<ctype.h>
    #include<stdlib.h>
    #include<bitset>
    #include<algorithm>
    #include<assert.h>
    #include<numeric> //accumulate
    #define endl "
    "
    #define fi first
    #define se second
    #define FOR(i,s,t) for(int i=(s);i<=(t);++i)
    #define mem(a,b) memset(a,b,sizeof(a))
    #define rush() int MYTESTNUM;scanf("%lld",&MYTESTNUM);while(MYTESTNUM--)
    #define debug(x) printf("%d
    ",x)
    #define ls o<<1
    #define rs o<<1|1
    #define lss ls,l,mid
    #define rss rs,mid+1,r
    using namespace std;
    
    const int maxn=100000+5;
    
    int sum[maxn<<2];
    double mx[maxn<<2];
    int n,m;
    inline int cal(double M,int o,int l,int r)
    {
        if(l==r)
            return M<mx[o];
        int mid=l+r>>1;
        if(M>=mx[ls])
            return cal(M,rss);
        return sum[o]-sum[ls]+cal(M,lss);
    }
    inline void update(int o,int l,int r,int p,double v)
    {
        if(l==r)
        {
            sum[o]=1;
            mx[o]=v;
            return ;
        }
        int mid=l+r>>1;
        if(mid>=p)
            update(lss,p,v);
        else
            update(rss,p,v);
        mx[o]=max(mx[ls],mx[rs]);
        sum[o]=sum[ls]+cal(mx[ls],rss);
    }
    int main()
    {
        cin.tie(0);
        cout.tie(0);
        //ios_base::sync_with_stdio(0);
        //freopen("in.txt","r",stdin);
        //freopen("out.txt","w",stdout);
        scanf("%d%d",&n,&m);
        for(int x,y;m;m--)
        {
            scanf("%d%d",&x,&y);
            double d=1.0*y/x;
            update(1,1,n,x,d);
            printf("%d
    ",sum[1]);
        }
    }
  • 相关阅读:
    vs code插件
    各大厂RTSP取流的URI
    关于VLC无法播放rtsp的问题分析
    VLC查看日志的方法
    wireshark的过滤命令
    vs编译完提示不支持尝试的执行操作
    vs2015的密钥
    VS制作dll、def文件的使用、dll加入工程使用
    python之NLP数据清洗
    python 生成词云
  • 原文地址:https://www.cnblogs.com/033000-/p/10841437.html
Copyright © 2011-2022 走看看