链接:http://codeforces.com/contest/1013/problem/E
给n个数,允许让每个数删减,现想要求k个严格的局部最大值,k取值为[1,⌈n2⌉]。
这dp考的时候没想出来,可以这么做:f(i,j,k)表示前i个数里有j个最大值,此时还讨论第i个数是(k=1)否(k=0)是局部最大值。
状态转移如下:
k=0时,f(i,j,0)可以更新到f(i+1,j,0)上,因为此时i和i+1都不是局部最大值,因此j不会变;或者更新到f(i+1,j+1,1)上,此时在i+1处为一个局部最大值。
k=1时,f(i,k,1)更新到f(i+1,j,0)上,但是相应地要有删减的代价;也可以更新到f(i+2,j+1,1)上,显然i+1处必然是一个极小值。
1 |
|
v1.5.2