【ARC104F】Visibility Sequence(区间DP)
Visibility Sequence
题目链接:ARC104F
题目大意
有一个数组 H,表示你构造的数组 X 中每一个位置的值上界,下界都是 1。
通过 X 构造数组 P,表示左边最后一个大于它的数的下标,如果没有就是 -1。
问你能构造出多少种不同的 P。
思路
发现数组长度只有 ,但是值域能到 。
但是完全没有必要,因为你只是大小关系,你完全可以把超过数组长度的设成数组长度,顶多就是它们两两之间都不一样嘛。
然后你发现这个 有点像一棵树,每次 指向 ,最后会形成以 为根的一棵树。
那问的就是这棵树能有多少形态呗。
而且边之间你放到区间里面是不会有交叉的,因为如果有 使得 ,那 。
那 即 ,那不应该 嘛。
所以是不交叉的。
那每个子树都是一个区间,你其实可以试着区间 DP。
然后你安排值,为了给后面留位置你肯定是能放多小放多小。
表示一棵树 区间,里面最大值是 。
则表示森林的答案。
放一个根连着儿子。
一种是直接放进去,一种是抬高了后面再放进去。
还有一种区间 DP 法。
前面我们从小到大考虑,我们考虑从大到小。
表示 区间来处理,除了自己本身的限制还有值域的全部上界 。
然后考虑从右往左枚举子树,因为子树之间那个儿子的值是要递增的。
那枚举最右边的那个子树的那个儿子的编号 ,那右边 的值域就是 ,左边的就是 。
两边方案乘起来,所以分的情况加起来即可。
代码
sol1
sol2
__EOF__

本文作者:あおいSakura
本文链接:https://www.cnblogs.com/Sakura-TJH/p/ARC104F.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
本文链接:https://www.cnblogs.com/Sakura-TJH/p/ARC104F.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现