P5677 [GZOI2017]配对统计


首先 具体有哪些点对我们是很好找到的

问题转化为 多次询问区间 有多少点对

对于多次区间离线询问 考虑定一边R 从左到右依次选择

对询问的R从小到大排序

这题树状数组还是很好想的 考虑一个点对【l,r】 一个询问【L,R】

如果r>R 那么这个区间一定不会考虑这个点对 所以有点对r<=R时才加入树状数组

对于每个点对【l,r】l加入树状数组 每次询问 只询问l>=L的点就好

#include
using namespace std;
#define lowbit(x) x&(-x)
#define ll long long
const int maxn=3e5+5;
int n,m,cnt;
int c[maxn];
void upd(int x){
	while(x>n>>m;
	if(n==1){
		cout<<"0"<c2)add(a[i+1].id,a[i].id);
		else if(c1