【题解】CF1580D 笛卡尔树上dp

题目链接

考虑选出的子序列为 \(b_m,b_2,...b_m\) ,令 \(c_i=f(b_i,b_{i+1}),1\le i\le m-1\)

\(k\) 满足 \(c_k=\min_{1\le i\le m-1}(c_i)\)

那么 \(c_k\) 对答案的贡献为 \(k\times (m-k)\)

发现其对应着笛卡尔树的结构。

那么相当于在笛卡尔树以 \(k\) 为根的子树中选 \(m\) 个点的最大价值。

笛卡尔树上做树上背包即可。 上下界优化后复杂度是 \(O(nm)\) 的。

代码记录

posted @ 2021-10-01 01:14  Themaxmaxmax  阅读(63)  评论(0编辑  收藏  举报