p1434 [shoi2002]滑雪
时间: 2023-04-26 11:00:28 浏览: 147
C++ P2162 [SHOI2007]宝石纪念币
这是一道动态规划的题目,需要用到最长上升子序列的思想。
首先,我们可以将每个点看作一个状态,用 dp[i] 表示以第 i 个点为结尾的最长上升子序列的长度。那么,我们可以得到转移方程:
dp[i] = max(dp[j]) + 1 (j < i && a[j] < a[i])
其中,a[i] 表示第 i 个点的高度。
最终的答案就是 dp 数组中的最大值。
具体实现时,可以使用二分查找来优化时间复杂度,将时间复杂度降为 O(nlogn)。
代码如下:
阅读全文