为什么用st表做只能得10分
#include<bits/stdc++.h>
#define int long long
using namespace std;
int n,m;
int a[1000000];
int f[1000000][21];
int dp[100000];
signed main(){
cin>>n>>m;
for(int i=1;i<=n;i++){
cin>>a[i];
f[i][0]=a[i];
}
for(int j=1;j<=19;j++){
for(int i=1;i+(1<<j)-1<=n;i++){
f[i][j]=max(f[i][j-1],f[i+1<<(j-1)][j-1]);
}
}
dp[1]=a[1];
for(int i=2;i<=n;i++){
for(int j=max(1ll,i-m+1);j<=i;j++){
int k=log2(i-j+1);
dp[i]=max(dp[i],dp[j-1]+max(f[j][k],f[i-(1<<k)+1][k])*(i-j+1));
}
}
cout<<dp[n]<<endl;
}
去掉st表,用像题解一样的的方法求最大值就得100?