
cpp
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
ll f[10004];
ll a[10004];
int main() {
int n,k;cin>>n>>k;
for(int i=1;i<=n;i++){
cin>>a[i];
}
for(int i=1;i<=n;i++){
ll c=0; // 当前段的最大技能水平
for(int j=i;j>=max(1,i-k+1);j--){ // 从第i头奶牛向前遍历,最多k头奶牛
c=max(c,a[j]);
f[i]=max(f[i],f[j-1]+c*(i-j+1));
}
}
cout<<f[n];
return 0;
}
状态转移:f[i] = max(f[i], f[j-1] + 当前段最大值 * 当前段长度)