当大家遇到形如
dp[i][j]=min/max(dp[i][k]+dp[k+1][j]+cost[i][j])dp[i][j]=min/max(dp[i][k]+dp[k+1][j]+cost[i][j])dp[i][j]=min/max(dp[i][k]+dp[k+1][j]+cost[i][j]) ①
或者
dp[i][j]=min/max(dp[k][j−1]+cost[k+1][j])dp[i][j]=min/max(dp[k][j-1]+cost[k+1][j])dp[i][j]=min/max(dp[k][j−1]+cost[k+1][j]) ②
的时候
可以考虑使用四边形不等式进行优化枚举中点kkk的过程
我们用一个s[i][j]s[i][j]s[i][j]对于f[i][j]来说最后可以转移她的kkk的值
那么我们对于一个f[i][j]来说,如果决策单调的话,kkk的取值范围一定在s[i][j−1]s[i][j-1]s[i][j−1]至s[i+1][j]s[i+1][j]s[i+1][j]的范围内
tips:
使用四边形不等式的时候记得判断决策单调和记着对应的区间右端点值(①式子中的jjj,②式子中的iii)需要倒序枚举。
练习:
HDU 2829
HDU3480