[四边形不等式]

本文探讨了在特定形式的动态规划问题中,如何利用四边形不等式来优化中间值k的枚举过程。通过限制k值在s[i][j-1]至s[i+1][j]的范围内,可以显著提高算法效率。文章还提供了两个实践题目供读者练习。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

当大家遇到形如
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][j1]+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][j1]s[i+1][j]s[i+1][j]s[i+1][j]的范围内
tips:
使用四边形不等式的时候记得判断决策单调和记着对应的区间右端点值(①式子中的jjj,②式子中的iii)需要倒序枚举。

练习:
HDU 2829
HDU3480

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值