题解地址:https://www.luogu.com.cn/article/dtudfl83
题解原文中:
可以正序扫一遍然后找出到每一个点之前最长的差小于等于 k 的序列(qian);然后再倒序找一遍找出到每一个点之后最长的差小于等于 k 的序列(hou)。
但是代码中处理 hou 数组的时候是这么写的: hou[l] = max(hou[l] + 1,r - l + 1);
导致对于以下的数据,hou 数组的输出为 4 3 2 1 5 4 3 2 1 3 2 1:
data.in
12 1
100 100 100 100 211 211 211 212 212 1218 1218 1218
个人认为代码中应写成 hou[l] = max(hou[l+1],r - l + 1); 这样 hou 数组的输出就为 5 5 5 5 5 4 3 3 3 3 2 1 更符合文章表述。