有一个细节、、
查看原帖
有一个细节、、
95246
MoonPie楼主2021/8/22 08:26

可能是我分块题做得太少了吧,做这道题的时候因为一个sb错误调了好久。

写修改 O(1)O(1) 查询 O(n)O(\sqrt n) 的分块时,数组要这样开:

int ax[N+1000],bl[1000],Len;

因为我的查询时这样的:

for (int k = qu[i].l; k < (L+1)*Len; ++k) res += ax[k];
for (int k = L+1; k <= m/Len; ++k) res += bl[k];

如果原数组大小不加一个块的小,在算散块时,可能会在查询时出界(查询时判断一下也可以)。

感觉是一个比较细节的地方,可能是我太菜了吧!

2021/8/22 08:26
加载中...