随笔分类 - 数据结构--笛卡尔树
摘要:前言 发现自己居然没有写过笛卡尔树的构建的总结。。 正文 笛卡尔树的概念 待补。 笛卡尔树的构建 我们通过不断维护“最右链”来构造笛卡尔树,也就是每次笛卡尔树的最右链(当前栈)一定是单调递减/增的,然后如果有弹栈操作,我们就把这个节点作为我们当前末尾的左儿子,弹完后这个节点作为当前栈底的右儿子,成为
阅读全文
摘要:题目 CF1483C Skyline Photo 分析 首先看到这个题很明显可以序列上dp,设置状态很常规,就是前i个位置可以得到的最大收益。 关键是转移,考虑朴素的转移:\(dp[i]=\max\limits_{j=1}^{i}\{dp[j-1]+b[minpos]\}\) 然后考虑优化,这类需要
阅读全文
摘要:题目 CF1156E Special Segments of Permutation 分析 分治,单调栈,笛卡尔树。 分治经典套路了,像这样数点对的都可以考虑分治。(树上就考虑点分治) 同样是经典套路,每次分治时钦定一定是右侧存在最大值或者左侧存在最大值。 然后双指针和一个数组统计即可,具体见代码。
阅读全文