【HDU4719】Oh My Holy FFF
这题面还挺有意思的
题目大意
有 n n n个士兵排成一行,现在要在不打乱顺序的前提下把他们分成若干组,每组士兵数量不能大于 L L L,且每一组最右边的士兵要高于前一组最右边的士兵。每种分组方案都有一个相应的分数,分数的计算方式为:从第二组开始, s c o r e = ∑ ( h i 2 − h i − 1 ) score=\sum(h_i^2-h_{i-1}) score=∑(hi2−hi−1)。其中 h i h_i hi表示第 i i i组最右边的士兵的身高。求最高的分数。
题解
前置知识:线段树优化DP
设 f i f_i fi表示将前 i i i个士兵分成若干组所能获得的最大分数。则转移式为:
f i = max ( f j + h i 2 − h j ) f_i=\max(f_j+h_i^2-h_j) fi=max(fj+hi2−hj),其中 i − l e n ≤ j ≤ i − 1 i-len\leq j\leq i-1