关于最长上升子序列有关的一些思考[蓝书思考题]

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]的最长非严格上升子序列,就是问题的答案。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值