###### hdu 5372 离散化加树状数组

#include<bits/stdc++.h>
using namespace std;
#define ll long long
const int maxn=2e5+10;
struct node{
int op,l,r;
}a[maxn];
int c1[maxn<<1],c2[maxn<<1];
int lowbit(int x){
return x&(-x);
}
void update(int n,int num,int *c){
while(n<maxn*2){
c[n]+=num;n+=lowbit(n);
}
}
int query(int n,int *c){
int ans=0;
while(n>0){
ans+=c[n];n-=lowbit(n);
}
return ans;
}
int n,op,l,r;int cas;
int b[maxn<<1];int opt[maxn<<1];
vector<int>vec;
int main(){
cas=1;
while(scanf("%d",&n)!=EOF){
int num=1;vec.clear();int cnt=0;
memset(c1,0,sizeof(c1));
memset(c2,0,sizeof(c2));
for(int i=1;i<=n;i++){
scanf("%d%d",&op,&l);
if(op==0){
r=l+num;opt[num]=i;num++;
b[cnt++]=l;b[cnt++]=r;
}
a[i].op=op;a[i].l=l;a[i].r=r;
}
sort(b,b+cnt);
cnt=unique(b,b+cnt)-b;
//  cout<<"sz = "<<cnt<<endl;
//  for(int i=0;i<cnt;i++){
//      cout<<"i = "<<i<<" b [i] = "<<b[i]<<endl;
//  }
//  int now=lower_bound(b,b+cnt,5)-b+1;
//  cout<<" now = "<<now<<endl;*/
int num1;int num2;
printf("Case #%d:\n",cas++);
for(int i=1;i<=n;i++){
if(a[i].op==0){
l=lower_bound(b,b+cnt,a[i].l)-b+1;
r=lower_bound(b,b+cnt,a[i].r)-b+1;
num1=query(l-1,c1);
num2=query(r,c2);
//cout<<" l= "<<l<<" r= "<<r<<endl;
//cout<<" num1=  "<<num1<<" num2= "<<num2<<endl;
printf("%d\n",num2-num1);
update(l,1,c1);
/*  cout<<" update check "<<endl;
for(int i=1;i<=cnt;i++){
cout<<" i = "<<i<<" cnt= "<<c1[i]<<endl;
}*/
update(r,1,c2);
}
else{
l=opt[a[i].l];int j=l;
//  cout<<" (((( l= "<<l<<endl;
//  cout<<" ======  "<<a[l].l<<" a[r].r = "<<a[l].r<<endl;
//  system("pause");
l=lower_bound(b,b+cnt,a[j].l)-b+1;
r=lower_bound(b,b+cnt,a[j].r)-b+1;
//system("pause");
update(l,-1,c1);
update(r,-1,c2);
}
}
}
}

#### hdu4325 树状数组+离散化

2015-02-06 10:09:23

#### hdu3450之离散化+二分查找+树状数组

2014-03-13 14:35:20

#### HDU 5372 (树状数组 离散化)

2016-05-24 15:06:29

#### 离散化+树状数组求逆序数

2013-01-19 14:52:12

#### 反向树状数组 + 离散化 HDU 5372

2017-09-06 16:17:47

#### [离散化+树状数组]逆序对

2016-05-01 12:27:31

#### 树状数组求逆序对及离散化

2017-08-26 22:59:15

#### 树状数组--离散化

2016-08-17 09:35:01

#### POJ：2299 Ultra-QuickSort（树状数组+离散化+技巧+求逆序对）

2016-08-17 10:34:25

#### 线段树进阶学习(例题)--树状数组学习+离散化+成端更新+区间合并+扫描线

2016-07-26 17:39:41

## 不良信息举报

hdu 5372 离散化加树状数组