错误的
for(int i=1;i<=cntq;i++){
while(ll>qq[i].l) now+=!cnt[a[--ll]]++;
while(ll<qq[i].l) now-=!--cnt[a[ll++]];
while(rr>qq[i].r) now-=!--cnt[a[rr--]];
while(rr<qq[i].r) now+=!cnt[a[++rr]]++;
while(tt<qq[i].t) update(i,++tt);
ans[qq[i].id]=now;
}
正确的
for(int i=1;i<=cntq;i++){
while(ll<qq[i].l) now-=!--cnt[a[ll++]];
while(ll>qq[i].l) now+=!cnt[a[--ll]]++;
while(rr<qq[i].r) now+=!cnt[a[++rr]]++;
while(rr>qq[i].r) now-=!--cnt[a[rr--]];
while(tt<qq[i].t) update(i,++tt);
while(tt>qq[i].t) update(i,tt--);
ans[qq[i].id]=now;
}
我也不知道这点错误我怎么改了这么久,希望后人不要和我一样zz。