-
把一个序列 A A A变成非严格单调递增的(单调不下降的),至少需要修改多少个数。
序列 A A A的总长度减去 A A A的最长不下降子序列长度即为答案。
证明:
对于最长不下降子序列中相邻两数 A i , A j A_i,A_j Ai,Aj,之间有 A j + 1 , A j + 2 , ⋯   , A i − 1 A_{j+1},A_{j+2},\cdots,A_{i-1} Aj+1,Aj+2,⋯,Ai−1,需要改变这 i − j + 1 i-j+1 i−j+1个数,以此类推,也就是序列 A A A的总长度减去 A A A的最长不下降子序列长度
-
把一个序列A变成严格单调递增的,至少需要修改多少个数?
构造序列 B i = A i − i B_i=A_i-i Bi=Ai−i,序列总长度减去 B B B的最长不下降子序列长度。
证明:
严格单调递增的 A A A序列, A i − A j ≥ i − j A_i-A_j\ge i-j Ai−Aj≥i−j
变式: A i − i ≥ A j − j A_i-i\ge A_j-j Ai−i≥Aj−j
只要按照 1 1 1求解即可。
动态规划经典例题
最新推荐文章于 2024-07-25 10:54:19 发布