题目条件相当于是要找到一个 a 的最长子序列 a′,满足在 a′ 中,对于任意的三个连续的 a′[i],a′[i+1],a′[i+2],要满足 a′[i+1]∗2>a′[i]+a′[i+2] 成立。
这题暴力选会 TLE,考虑用 DP 来写,相比于递推版的 DP 来说,在这题中递归版的记忆化搜索写起来会方便一点。
定义 dfs(u, l, r)表示当前考虑到第 u 块符文石,并且在已经选择的符文石中,最后两块符文石分别是 l 和 r (没选记为 0 ),的最大选择数量,记为 res。
状态转移如下:
考古学家在一片遗迹中发现了一排符文石,从左到右依次编号为 1 到 N。每块符文石都蕴含着一个整数魔法值,第 i 块符文石的魔法值为 ai。她打算按照从左到右的顺序,选择其中一部分符文石进行激活。
当她激活的符文石中,出现任意连续三块时,如果左右两块魔法值的平均值大于等于中间那块,即 (a左+a右)/2≥a中,就会引发能量失衡,导致激活失败。为了避免能量失衡,必须在选择过程中保证已激活的符文石序列里,任何连续三块都不满足这一条件。
请你帮助她计算,在不引发能量失衡的前提下,最多可以激活多少块符文石。
符文石的数量 N 不超过 5000。每块符文石的魔法值绝对值不超过 1012。
By signing up a CodeFun2000 universal account, you can submit code and join discussions in all online judging services provided by us.