链接:http://codeforces.com/contest/1013/problem/E
给n个数,允许让每个数删减,现想要求k个严格的局部最大值,k取值为$[1,\lceil\frac{n}{2}\rceil]$。
这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 |
|