题解地址: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
更符合文章表述。