cin >> n >> k;
for(int i = 1; i <= n; i ++ ) cin >> a[i];
for(int i = 1; i <= n; i ++ )
for (int j = 0; j <= k; j ++ ) f[i][j] = INF;
for (int i = 1; i <= n; i ++ ) {
int tmp = INF;
for (int j = 0; j <= k && j <= i - 1; j ++ ) {
tmp = min(tmp, a[i - j]);
int w = tmp * (j + 1);
for (int d = j; d <= k && d <= i - 1; d ++ )
f[i][d] = min(f[i][d], f[i - j - 1][d - j] + w);
}
}
为什么每次让ai - d 到 ai 全部都变成其范围内的最小值 就能递推出正确答案