在分块中,对于最后一个块没有分完时,需要判断最后一个块的端点,进行再次分块,代码如下
if (R[t] < n) ++t,L[t] = R[t - 1] + 1, R[t] = n;
如果将其改为
if (R[t] < n) L[++t] = R[t - 1] + 1, R[t] = n;
其中 t 始终满足 t=n≥0t= \sqrt n \ge 0t=n≥0。
本地能过样例,但是vs编译器显示:正在从 "R" 读取无效数据。并且显示了访问 R[-1] 时越界。
明明 t 恒大于等于0,但却出现了这样的问题导致 WA ,是为啥啊?