RT
代码如下:
using namespace std;
const int N=55;
int n,m,a[N],b,ans[N],dp[N][N][2];
int wa(int i,int j,int l,int r){
return (a[j]-a[i])*(ans[l]+ans[n]-ans[r-1]);
}
int main() {
cin>>n>>m;
for(int i=1;i<=n;i++){
cin>>a[i]>>b;
ans[i]=ans[i-1]+b;
}
dp[m][m][0]=dp[m][m][1]=0;
memset(dp,0x3f,sizeof(dp));
for(int j=m;j<=n;j++){
for(int i=j-1;i>0;i--){
dp[i][j][0]=min(dp[i+1][j][0]+wa(i,i+1,i,j+1),dp[i+1][j][1]+wa(i,j,i,j+1));
dp[i][j][1]=min(dp[i][j-1][0]+wa(i,j,i-1,j),dp[i][j-1][1]+wa(j-1,j,i-1,j));
}
}
cout<<min(dp[1][n][0],dp[1][n][1])<<endl;
return 0;
}