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