CF704B

题面

n 个元素,第 i 个元素有五个参数 xi,ai,bi,ci,di。试求出一个1n 的排列 p,满足 p1=s,pn=e,同时最小化这个排列的权值。

一个排列的权值为i=1nf(pi,pi+1),其中 f(i,j) 的值有两种情况:

  • i>j,则 f(i,j)=xixj+ci+bj
  • i<j,则 f(i,j)=xjxi+di+aj

数据范围: n5×103

题解

dp 的一种模型,因为 i 产生的贡献和他两边的数的大小有关,所以我们按照 i 从小到大加入,维护连续段的数量。

这里连续段是指,我们已经加入了小于 i 的数,然后钦定每一个连续段中间不能再插入数,现在考虑加入的 i ,他左边/右边都可以接/不接一个已有的连续段。

为什么这样做,因为这样我们在加入 i 的时候是知道他两边的数比他大还是小,接连续段 小,不接 大。

所以这样就可以转移了。

还要注意一点,就是如果确定了起点/终点了之后(这里给定了、但也可以不给定,这时候就需要设 [0/1][0/1] 表示确定起点、终点),就要避免一些不合法的状态。

具体来说,就是不能有当连续段只有 1 个的时候放一个数在起点左边/终点右边。

扩展

考虑还有什么情况下" i 产生的贡献和他两边的数的大小有关",绝对值!

如果贡献式子中带了 |xixj| 这种东西,那么就把 xi 排序,然后按上面的办法设连续段。

启发

  • 一种新的dp模型。

本文作者:qwq_123

本文链接:https://www.cnblogs.com/qwq-123/p/16054550.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   qwq_123  阅读(36)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
💬
评论
📌
收藏
💗
关注
👍
推荐
🚀
回顶
收起