MLE求调
  • 板块题目总版
  • 楼主Him_shu
  • 当前回复4
  • 已保存回复4
  • 发布时间2024/8/29 11:22
  • 上次更新2024/8/29 15:07:05
查看原帖
MLE求调
905885
Him_shu楼主2024/8/29 11:22

题目

#include<bits/stdc++.h>
using namespace std; 
#define int long long
#define inf 1e14
#define lim 1e9
#define M 1000005
#define N 4000005
//#define ls(x) (x<<1)
//#define rs(x) (x<<1|1)
#define mid ((l+r)/2)
int n;
int val[M];
struct Tree{
    int t[N],lson[N],rson[N],cnt=1;
    inline int ls(int u){
        if(lson[u]==0)lson[u]=++cnt;
        return lson[u];
    }
    inline int rs(int u){
        if(rson[u]==0)rson[u]=++cnt;
        return rson[u];
    }
    void pushup(int now){
		t[now]=t[ls(now)]+t[rs(now)];
	}
	int out(int now,int l,int r,int ql,int qr){
        if(ql<=l&&r<=qr){return t[now];}
        int sum=0;
        if(ql<=mid)sum+=out(ls(now),l,mid,ql,qr);
        if(mid<qr)sum+=out(rs(now),mid+1,r,ql,qr);
        return sum;
	}
	void in(int now,int l,int r,int pos,int val){
        if(l==r){t[now]+=val;return;}
        if(pos<=mid)in(ls(now),l,mid,pos,val);
        if(mid<pos)in(rs(now),mid+1,r,pos,val);
        pushup(now);
	}
}t;
signed main(){
    cin>>n;
    while(n--){
		int opt,x,l,r;
		cin>>opt;
		if(opt==1){
			cin>>x;
			t.in(1,-lim,lim,x,1);
		}
		else if(opt==2){
			cin>>x;
			t.in(1,-lim,lim,x,-1);
		}
		else{
			cin>>l>>r;
			cout<<t.out(1,-lim,lim,l,r)<<"\n";
		}
	}
    return 0;
}

提交记录

2024/8/29 11:22
加载中...