CF704B
题面
有 个元素,第 个元素有五个参数 。试求出一个 的排列 ,满足 ,同时最小化这个排列的权值。
一个排列的权值为,其中 的值有两种情况:
- 若 ,则 。
- 若 ,则 。
数据范围: 。
题解
dp 的一种模型,因为 产生的贡献和他两边的数的大小有关,所以我们按照 从小到大加入,维护连续段的数量。
这里连续段是指,我们已经加入了小于 的数,然后钦定每一个连续段中间不能再插入数,现在考虑加入的 ,他左边/右边都可以接/不接一个已有的连续段。
为什么这样做,因为这样我们在加入 的时候是知道他两边的数比他大还是小,接连续段 小,不接 大。
所以这样就可以转移了。
还要注意一点,就是如果确定了起点/终点了之后(这里给定了、但也可以不给定,这时候就需要设 表示确定起点、终点),就要避免一些不合法的状态。
具体来说,就是不能有当连续段只有 个的时候放一个数在起点左边/终点右边。
扩展
考虑还有什么情况下" 产生的贡献和他两边的数的大小有关",绝对值!
如果贡献式子中带了 这种东西,那么就把 排序,然后按上面的办法设连续段。
启发
- 一种新的dp模型。
本文作者:qwq_123
本文链接:https://www.cnblogs.com/qwq-123/p/16054550.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步