2019年GDCP广东省赛C题(莫队算法)

比赛的时候没能A出来,现在来补补题
(后来有做了一道类似的题,发现超时了,这道题还要用到树状数组,等学会了再来修改)

代码如下:

#include
#include
#include
#include
#include
using namespace std;
typedef long long ll;
const int maxn=1e5+5;
int ans[30005],block,temp;
int a[30005],K;
struct query
{
	int l;
	int r;
	int num;
}qy[30005];
bool cmp(query x,query y)
{
	if(x.l/block!=y.l/block)
		return x.lx;i--)
				if((int)(abs(a[x]-a[i]))<=K)
					temp++;
		}
		else
		{
			for(int i=x;ix;i--)
				if((int)(abs(a[x]-a[i]))<=K)
					temp--;
		}	
		else 
		{
			for(int i=x;iqy[i].l){	widen(--left,right,1);
		}
		while(rightqy[i].r){	lessen(left,right--,2);
		}
		ans[qy[i].num]=temp;
	}
	for(int i=1;i<=q;i++)
		printf("%d\n",ans[i]);
	return 0;
}

你可能感兴趣的:(莫队算法)