70MLE 求调
  • 板块P4939 Agent2
  • 楼主hzoi_Shadow
  • 当前回复2
  • 已保存回复2
  • 发布时间2023/5/20 19:47
  • 上次更新2023/10/23 15:13:14
查看原帖
70MLE 求调
848964
hzoi_Shadow楼主2023/5/20 19:47

自觉忽略注释

#include<bits/stdc++.h>
using namespace std;
int a[10000001],n,m,i,ans,x,y,z,pd;
struct student
{
    int l,r,num;
}tree[40000001];
int lson(int x)
{
    return x*2;
}
int rson(int x)
{
    return x*2+1;
}
void build(int rt,int l,int r)
{
    tree[rt].l=l;
    tree[rt].r=r;
	tree[rt].num=0;
    if(l==r)
    {
        return;
    }
    int mid=(l+r)/2;
    build(lson(rt),l,mid);
    build(rson(rt),mid+1,r);
}
void update(int rt,int l,int r,int val)
{
    if(l<=tree[rt].l&&tree[rt].r<=r)
    {
        tree[rt].num+=val;
        return;
    }
    if(l<=tree[lson(rt)].r)
    {
        update(lson(rt),l,r,val);
    }
    if(tree[rson(rt)].l<=r)
    {
        update(rson(rt),l,r,val);
	}
}
void query(int rt,int val)
{
	ans+=tree[rt].num;
	if(tree[rt].l==tree[rt].r)
	{
		return;
	}
	if(val<=tree[lson(rt)].r)
	{
		query(lson(rt),val);
	}
	if(tree[rson(rt)].l<=val)
	{
		query(rson(rt),val);
	}
}
int main()
{
	cin>>n>>m;
	build(1,1,n);
	for(i=1;i<=m;i++)
	{
		cin>>pd;
		if(pd==0)
		{
			cin>>x>>y;
			update(1,x,y,1);
		}
		if(pd==1)
		{
			ans=0;
			cin>>x;
			query(1,x);
			cout<<ans+a[x]<<endl;
		}
	}
    return 0;
}
/*
#include<bits/stdc++.h>
using namespace std;
int a[30000001],c[30000001];
int lowbit(int x)
{
	return (x&(-x));
 } 
int getsum(int x)
{
	int ans=0,i;
	for(i=x;i>0;i-=lowbit(i))
	{
		ans+=c[i];
	}
	return ans;
} 
void add(int n,int x,int key)
{
	int i;
	for(i=x;i<=n;i+=lowbit(i))
	{
		c[i]+=key;
	}
} 
int main()
{
	int n,m,i,l,r,k,x;
	cin>>n>>m;
	for(i=1;i<=m;i++)
	{
		cin>>x;
		if(x==0)
		{
			cin>>l>>r;
			add(n,l,1);
			add(n,r+1,-1);
		} 
		if(x==1)
		{
			cin>>k;
			cout<<getsum(k)<<endl; 
		}
	}
	return 0;
}
*/ 
2023/5/20 19:47
加载中...