###### [UESTC 1342]郭大侠与甲铁城

——于是，为了成为真正能闪耀光辉的男人，郭大侠的战斗开始了。
……

Input

1<=n,q<=100000
1<=Li<=Ri<=n
1<=a[i]<=10000

Output

5 3
1 2 3 1 1
1 3
1 4
3 5


3
3
2


#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<cstdlib>
#include<cmath>
#include<queue>
#define LiangJiaJun main
#define LL long long
#define pa pair<int,int>
using namespace std;
int n,Q,block,belong[100004];
int temp[100004];
struct data{
int l,r,ans,sit;
}q[100004];
int a[100004];
inline bool dex(data x,data y){
return (belong[x.l]==belong[y.l])?(x.r<y.r):(belong[x.l]<belong[y.l]);
}
inline bool cmp(data x,data y){return x.sit<y.sit;}
void solve(){
int l=0,r=0,ans=0;
for(int i=1;i<=Q;i++){
while(r<q[i].r){
r++;
if(!temp[a[r]])++ans;
temp[a[r]]++;
}
while(l>q[i].l){
l--;
if(!temp[a[l]])++ans;
temp[a[l]]++;
}
while(r>q[i].r){
if(temp[a[r]]==1)--ans;
temp[a[r]]--;
r--;
}
while(l<q[i].l){
if(temp[a[l]]==1)--ans;
temp[a[l]]--;
l++;
}
q[i].ans=ans;
}
}
int LiangJiaJun(){
scanf("%d%d",&n,&Q);
block = (int)sqrt((double)n);
for(int i=1;i<=n;i++)scanf("%d",&a[i]);
for(int i=1;i<=n;i++)belong[i] = (i-1)/block + 1;
for(int i=1;i<=Q;i++){
scanf("%d%d",&q[i].l,&q[i].r);
q[i].sit = i;
}
sort(q+1,q+Q+1,dex);
solve();
sort(q+1,q+Q+1,cmp);
for(int i=1;i<=Q;i++)printf("%d\n",q[i].ans);
return 0;
}



#### 2016 UESTC Training for Data Structures J - 郭大侠与Rabi-Ribi CDOJ 1334 优先队列

2016-05-01 14:31:06

#### 【CDOJ 1342】郭大侠与甲铁城 【离线树状数组】

2016-08-01 20:43:51

#### 2016 UESTC Training for Data Structures K - 郭大侠与甲铁城 CDOJ 1342 离线树状数组

2016-05-01 14:33:01

#### 2016 UESTC Training for Data Structures K - 郭大侠与甲铁城 树状数组+离线操作

2016-05-01 00:03:17

#### [LightOJ 1342] Aladdin and the Magical Sticks （期望的线性性质+几何分布+邮票收集问题）

2016-07-31 15:57:06

#### 【概率DP】 LightOJ 1342 Aladdin and the Magical Sticks

2016-08-07 19:17:38

#### UESTC 1339 郭大侠与线上游戏

2017-03-11 14:21:53

#### hdu-1342 Lotto

2014-09-18 14:46:15

#### Lightoj 1342(求期望)

2016-11-02 13:40:21

#### The 15th UESTC Programming Contest Final 总结

2017-04-04 09:58:02

## 不良信息举报

[UESTC 1342]郭大侠与甲铁城