Job Lookup

不难发现题目要求构造的树是一颗二叉搜索树,于是考虑在升序排列上构造

考虑谁作为树根,不难发现这个过程很像区间DP,设当前枚举的树根为l,我们只要能够O(1)计算[1,l1][l+1,n]中间的贡献就可以转移了

当然还要消除后效性,于是考虑分配花费。不难想到类似树上染色的分配方案,于是做如下分配:假设已经确定了最终的树,对于两个点u,v,他们的花费是duvcuv,我们将uv的每一条边的贡献加上cuv,于是最终的总花费等于这棵树所有边的贡献之和

于是就可以进行DP转移了。设f[l][r]表示将区间[l,r]构建成一颗BST,其所有边的最小贡献。枚举根节点k,则f[l][r]=min(f[l][k1]+f[k+1][r]+cost1+cost2),其中cost1表示[l,k1]的所有点与除了[l,k1]之外的点构建联系所经过的k与其左子节点的边的花费,cost2类似

形式化地,cost1=i=lk1sumi,l1+sumi,nsumi,k1,其中

sumi,j=k=1jc[i][k]

posted @   最爱丁珰  阅读(3)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示