【题解】ARC125 C - LIS to Original Sequence

这篇博客讲解了如何使用数学归纳法和伪贪心策略构造排列ppp,确保其部分最长递增子序列ppp与给定的递增序列aaa一致。通过递归证明方法,作者证明了这种构造方法的有效性和唯一性(非唯一性除外)。涉及的知识点包括LIS、字典序和递归证明。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题意:构造一个排列 p p p ,使得 p p p 的其中一个 LIS 为给定的序列 a a a 。保证 a a a 单调递增。

solution:
考点:数学归纳法。
我写的伪贪心 hhh。
如果 k=1 ,那么只有唯一的构造方案 n, n-1, …, 1
考虑从左往右构造,保证字典序最小。设当前全局最小值为 Min 。

  1. 如果 a[j]=Min ,那么直接赋 c[i]=a[j++]
  2. 否则的话,赋 c[i]=a[j++],c[i+1]=Min (注意两个一定要一起赋,待会讲为什么)

首先可以知道一定不存在比这种方案更优的答案。我们只需要证明满足条件即可。可以用递归证明,每次的 LIS 长度一定是上一层 + 1 。所以到了 i=1 一定满足 LIS 长度为 k 。
顺带提一句,这个构造方案不是唯一的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值