正解好像是树套树?
然而暴力就能过233
AC code:
#include <cstdio>
const int N=10010;
const int M=1000010;
int n,m,tot;
int c[N],num[M];
bool app[N];
int main(){
scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++){
int t;
scanf("%d",&t);
if(!num[t]) num[t]=++tot;
c[i]=num[t];
}
for(int i=1;i<=m;i++){
int a,b;
char ord;
scanf("\n%c%d%d",&ord,&a,&b);
if(ord=='R'){
if(!num[b]) num[b]=++tot;
c[a]=num[b];
}
else{
int ans=0;
for(int j=a;j<=b;j++){
if(!app[c[j]]){
ans++;
app[c[j]]=1;
}
}
printf("%d\n",ans);
for(int j=a;j<=b;j++) app[c[j]]=0;
}
}
return 0;
}