为什么会变成这样呢? #2(绝对值与最大值转换)

优化动态规划式子,1in,其中 aibi 都是预先给定的常数:

f(i)=max1kif(k1)+|aiak|+|bibk|

期望复杂度:O(n)

解答:lcw's trick

注意到 |xy|=max{xy,yx},于是考虑令

g00(i)=max1kif(k1)akbkg01(i)=max1kif(k1)ak+bkg10(i)=max1kif(k1)+akbkg11(i)=max1kif(k1)+ak+bk

于是,显然有 O(1) 递推式

g00(i)=max{g00(i1),f(i)aibi}g01(i)=max{g01(i1),f(i)ai+bi}g10(i)=max{g10(i1),f(i)+aibi}g11(i)=max{g11(i1),f(i)+ai+bi}

另一方面,我们有

f(i)=max{g00(i1)+ai+bi,g01(i1)+aibi,g10(i1)ai+bi,g11(i1)aibi}

这立即得到了一个 O(n) 的递推。

例题:

posted @   方而静  阅读(45)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~
点击右上角即可分享
微信分享提示