rt,感觉自己写的分块预处理依托答辩。
我的板子:(差不多这样,没测正确性)
int len = sqrt(n);
int T = n / len;
if(n % len) T++;
for(int i = 1; i < T; i++) {
l[i] = r[i - 1] + 1;
r[i] = r[i - 1] + len;
}
l[T] = r[T - 1] + 1;
r[T] = n;
for(int i = 1; i <= T; i++) for(int j = l[i]; j <= r[i]; j++) bl[j] = i;