inline int solve(int k,int x){
memset(f,0x3f,sizeof(f));
f[k-1][0]=0;
for(int i=k;i<=n;i++){
int U=max(0ll,a[i]-x),D=max(0ll,x-a[i]);
for(int j=0;j<=U;j++)f[i][U]=max(D,min(f[i][U],f[i-1][j]));
for(int j=U+1;j<=20;j++)f[i][j]=max(D,min(f[i][j],f[i-1][j]));
if(i==k)continue;
U=max(0ll,a[i]+a[i-1]-x),D=max(0ll,x-a[i]-a[i-1]);
for(int j=0;j<=U;j++)f[i][U]=max(D,min(f[i][U],f[i-2][j]));
for(int j=U+1;j<=20;j++)f[i][j]=max(D,min(f[i][j],f[i-2][j]));
}
int ans=inf;
for(int i=0;i<=20;i++)ans=min(ans,i+f[n][i]);
return ans;
}
关于这个 dp,当第二维是 2×109 大小时,可以用数据结构啥的优化写吗?