核心代码:
for(int i = 2;i<=m;i++){
now ^= 1;
for(int j = i;j<=n;j++){
for(int k = 1;k<=j-i+1;k++){
dp[now][j][k] = max(-INF,dp[now^1][j-k][p[i-1][j-k]]+b[i]*(f[j]-f[j-k]));
if(dp[now][j][k] > maxn[i][j]) maxn[i][j] = dp[now][j][k],p[i][j] = k;
}
}
}
now 是滚动数组的组件。p[][]可以预处理出来。T 组数据是 O(Tn2m) 的。如何优化?
其中,1≤T≤20,1≤m≤n≤2×103、