CF1144G Two Merged Sequences

CF1144G Two Merged Sequences

题意

现在给你一个长度为n的序列

你要把它拆成一个严格递增序列和一个严格递减序列

如果不可行输出NO

如果可行输出YES并输出每个数属于递增序列还是递减序列

题解

感觉脑子瓦特了,感觉这个 dp 的状态设计是比较自然的。
首先我们考虑一个数字的归属,要么是属于上升子序列要么是属于下降子序列。
而一个数如果接在了末尾显然是最大/最小的,而我们判断能不能接上只需要知道最后一个就行了。
而转移的时候知道前一个的归属也就知道了其中一个序列的最值,显然我们还要记录的就是另一个序列的最值,所以设 fi,0/1
fi,0 表示当 ai 属于上升序列时下降序列的最小值。
fi,1 表示当 ai 属于下降序列时上升序列的最大值。
然后这个转移就很显然了,输出方案时记录一下转移的来源就好了。 code

..

感觉还是观察性质的能力不够,如果想到第二维并且注意到最后一个一定是定值的话解法还是很自然的。
这题还有一个加强版CF1693D,但是结论不会证明,先鸽着。

本文作者:snow-panther

本文链接:https://www.cnblogs.com/snow-panther/p/17506783.html

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

posted @   谭皓猿  阅读(16)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起