一道动规求助(捞)

学术版

_error404 @ 2024-03-26 19:45:46

原题链接:
H:可修改的最长上升子序列

虽然感觉没必要但还是把题目用markdown打一下方便各位直接在洛谷上看吧,顺便将公式变成Latex

题目描述

我们都做过基础的LIS问题,本题增加了可以在一定次数内修改数列的值进一步最大化LIS长度这一变动。

注意:这里的上升指的是严格单调上升,即相等的情况被排除在外。

现在给定一个长度为 n 的序列 x_1, …, x_n 并保证每一个 x_i 都是 [1, n] 中的整数。你可以对序列 x 进行不超过 m 次修改,每次修改都可以把任意一个 x_i 修改成 [1,n] 中的任意一个整数,而你的目标是最大化结果序列的最长上升子序列的长度。

你需要对 m = 0, …, nn+1 种情况分别输出最大可能的最长上升子序列的长度。

输入

第一行输入一个整数 n (1 ≤ n ≤ 500) 表示序列长度。

第二行输入 n 个空格隔开的整数 x_1, …, x_n(1 ≤ x_i ≤ n),表示初始序列。

输出

输出一行 n+1 个空格隔开的整数,分别表示 m = 0, …, n 时的答案。

样例输入

9
1 7 3 5 9 4 8 2 6

样例输出

4 5 6 7 8 8 8 9 9 9

看数据量感觉是O(n^3)的动规,但蒟蒻太菜了写不出,球球各位神犇指点一下辣QwQ


|