ZJU 3349 Special Subsequence【线段树】

来源:互联网 发布:源码上传工具有哪些 编辑:程序博客网 时间:2024/05/13 12:27

【题目地址】

    http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3349

 

【题目大意】

    一个长度为n的序列,求一个长度最大的子序列(不一定连续),满足相邻两个元素的差的绝对值不超过给定的d。

   

    Sample Input

    5 2    1 4 3 6 5    5 0    1 2 3 4 5

    Sample Output

    3    1

【解题思路】

    从左到右扫描,并维护一个线段树(区间树),记录当前以某个数结尾的最长子序列的长度,每次都update_max(a, query_max(a – d, a + d) + 1)就好了,最后答案是query_max(-inf, inf)。由于元素的值的范围很大,要离散化。

 

【代码】