BZOJ 2038 小Z的袜子(hose) [莫队算法]

题意:给你n只袜子的颜色,询问在袜子区间【L,R】中选出两只相同颜色的袜子的概率

题解:询问量比较大,明显用莫队

#include
#include
#include
#include
#include
#define N 50005
using namespace std;
typedef long long ll;
ll a[N];
ll pos[N];
ll num[N];
ll len;
struct node
{
	ll l,r,id;
	node(){}
	node(ll l,ll r,ll id)
	{
		this->l=r;
		this->r=r;
		this->id=id;
	}
}q[N];
ll ansa[N],ansb[N];
bool cmp(node a,node b)
{
	return pos[a.l]=q[i].l;l--)
				ans+=modify(l,1);
			l++;
		}
		if(r>q[i].r)
		{
			for(;r>q[i].r;r--)
				ans+=modify(r,-1);
		}
		if(q[i].l>l)
		{
			for(;l

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