51nod 1571 最近等对

zcmimi at 
查看原题'" class='mdui-btn mdui-btn-raised'>点击加载点击跳转自己写了个莫队,结果$51nod$跑的太慢,然后$TLE(MLE)$了题解妙极了:离线之后,从左向右扫一遍,让每个值存储“当前已扫过的部分中,右边第一个与自己相等的点到自己的距离”,然后如果当前扫到的点是询问的右端点的话,就回答这个询问。这里面有个很巧妙的地方就是在询问的时候按 r 的大小从左往右询问,每次更新的时候更新的是和这个点最近的左边的点。因为只有更新到第 r 个点时才能能查询 l - r 的区间例如:1 2 3 4 1 只有在 r 等于 5 时才能询问 L - 5 的区间,此时更新第一个……