刚学OI,求调树状数组。
  • 板块灌水区
  • 楼主GODTREE
  • 当前回复0
  • 已保存回复0
  • 发布时间2023/12/13 09:44
  • 上次更新2023/12/13 15:05:53
查看原帖
刚学OI,求调树状数组。
776799
GODTREE楼主2023/12/13 09:44

RT

当B=2时

namespace solve2
{
	p_2 a[100005];
	int bit[100005*2];
	int long_abs(int x)
	{
		return max(x,-x);
	}
	int lowbit(int x)
	{
		return x&(-x);
	}
	void add(int x,int y)
	{
		while (x<=2*m)
		{
			bit[x]+=y;
			x+=lowbit(x);
		}
	}
	int sum(int x)
	{
		if (x>2*m) x=2*m;
		int res=0;
		while(x>0)
		{
			res+=bit[x];
			x-=lowbit(x);
		}
		return res;
	}
	signed main()
	{
		for (int i=1;i<=n;i++)
		{
			int x,y;
			cin>>x>>y;
			a[i].x=x+y;
			a[i].y=x-y;
		}
		sort(a+1,a+n+1,cmp2);
		for (int i=1,j=1;i<=n;i++)
		{
			while(long_abs(a[i].y-a[j].y)>d)
			{
				add(a[j].x,-1);
				j++;
			}
			cnt+=sum(a[i].x+d)-sum(a[i].x-d-1);
			add(a[i].x+1,1);
		}
		return 0;
	}
}
2023/12/13 09:44
加载中...