问题转化
问题相当于:从第 1 个平台出发,每次向前跳跃的距离必须是“光羽数列”(斐波那契数列)中的一项,最终恰好到达第 N 个平台,求沿途收集的能量水晶之和的最大值。
定义 dp[i] 表示到达第 i 个平台时能获得的最大总能量。初始化 dp[1]=s1,其余 dp 值设为负无穷(因为能量值可能为负,且初始时不可达)。
预处理光羽数列
生成所有不超过 N−1 的光羽数列的项(因为从第 1 个平台跳到第 N 个平台的最大跳跃距离为 N−1)。数列 F:F1=1, F2=1, Fk=Fk−1+Fk−2,生成时终止条件为 Fk≤N−1。
在神秘的幻境中,有一条由 N 个平台组成的悬空栈道,平台从左到右依次编号为 1 到 N。探险者从第 1 个平台出发,每个平台上都放置着一定数量的能量水晶(数值可正可负)。探险者每次可以向前跳跃一段距离,这段距离必须是“光羽数列”中的某一项。光羽数列的定义如下:第一项和第二项均为 1,从第三项起,每一项等于前两项之和,即 F1=1,F2=1,Fk=Fk−1+Fk−2(k≥3)。探险者希望恰好落在第 N 个平台上,沿途收集的水晶总能量最大。请你帮忙计算这个最大总能量。
平台数量 N 不超过 2×105,每个平台上的能量水晶数值的绝对值不超过 109。
第一行包含一个整数 N (1≤N≤2×105)。 第二行包含 N 个整数,第 i 个整数表示第 i 个平台上的能量值 si (∣si∣≤109)。
By signing up a CodeFun2000 universal account, you can submit code and join discussions in all online judging services provided by us.