1.给定一个序列,使这个序列严格单调上升,需要删除多少个元素。
答案:序列长度-最长严格上升子序列长度【个人认为,显然结论,不予证明】
2.给定一个序列,使这个序列非严格单调上升,需要删除多少个元素。
答案: 序列长度-最长非严格上升子序列长度【个人认为,显然结论,不予证明】
3.给定一个序列,使这个序列非严格单调上升,需要修改多少个元素。[要求元素均为整数]
答案: 序列长度-最长非严格上升子序列长度
【理解(不算严格的证明):很容易想到,除去非严格上升子序列里的元素,剩下的元素,只需要按照需要变成子序列里的元素就可以了,比如 5 1 1 4 2 6 1,最长非严格上升子序列 1 1 2 6,剩下的5 4 1,分别按照需要变成1 1 6即可】
4.给定一个序列,使这个序列严格单调上升,需要修改多少个元素。[要求元素均为整数]
正确答案: 构造序列B[i]=A[i]-i,答案为序列长度-B的最长非严格上升序列长度。
错误答案1:序列长度-最长非严格上升子序列长度
错误答案2:序列长度-最长严格上升子序列长度
错误答案1错在:很容易想到如果这个序列本身就是一个非严格上升子序列,那么答案将为0,很显然答案不为0
错误答案2错在:5 1 2 6 3 4,最长严格上升子序列1 2 3 4,单纯修改剩下的5 6已经不满足要求。
正确答案为什么正确?
首先不考虑构造一个B序列,单纯的考虑序列本身。序列长度-最长非严格上升子序列长度。按照这样修改,肯定能够将整个序列构造成一个非严格上升子序列,如果序列的所有第i元素对应加i,那么显然,整个序列将变得严格上升。那么我令B[i]=A[i]-i,考虑构造B[i]的最长非严格上升子序列。那么根据前面推理,自然的,构造出来的B[i]+i=A[i]是严格上升的。所以构造B[i]的最长非严格上升子序列,就是问题的答案。