首页 > 其他分享 >☆ 启发式 ☆ 合并! ☆ 分裂! ☆

☆ 启发式 ☆ 合并! ☆ 分裂! ☆

时间:2022-12-17 22:22:39浏览次数:44  
标签:log min 合并 分裂 启发式 树上

我不知道为啥要起这个标题。

启发式合并就是一个思想,把小的往大里合。

感性理解,就是每次合并一定会使集合大小翻倍,于是复杂度仅多一个 \(\log\)。

树上启发式合并

难维护的子树节点信息可以树上启发式合并。

一般会用到 set,map,或者需要手写平衡树进行维护信息。

启发式分裂

有一个区间,每次把它分裂成两半,然后计算两半之间的答案。

直接计算显然是 \(n^2\) 的,但是我们每次可以用较小的一遍去计算较大的一边的贡献。

因为这东西本质上就可以看作是一个树形结构,所以其实和树上启发式合并是一样的。

单调栈/笛卡尔树

对于区间 \(\min / \max\) 的问题,\(R_i-L_i\) 的总和是 \(n^2\) 级别的,但是 \(\min\{i-L_i, R_i-i\}\) 就是 \(n \log n\) 级别的。

标签:log,min,合并,分裂,启发式,树上
From: https://www.cnblogs.com/apjifengc/p/16989728.html

相关文章

  • 带条件的矩阵去重合并
    问题:根据条件将矩阵中的唯一值合并到一个单元格内let源=Excel.CurrentWorkbook(){[Name="表1"]}[Content],逆透视的其他列=Table.UnpivotOtherColumns(源,......
  • 矩阵去重合并
    问题:保留矩阵中的唯一值,再合并到一起let源=Excel.CurrentWorkbook(){[Name="表1"]}[Content],逆透视的列=Table.UnpivotOtherColumns(源,{},"属性","值......
  • 带条件的矩阵去重合并
    问题:同一条件下所有人员去重后合并到一个单元格函数公式解决:=CONCAT(UNIQUE(IFERROR(INDEX(FILTER(B$2:D$10,A$2:A$10=F2),N(IF(1,ROW($3:$20)/3)),N(IF(1,MOD(ROW($3:......
  • 矩阵去重合并
     问题:A2:C5区域去除重复项后再合并到一个单元格内函数公式解决:=CONCAT(UNIQUE(T(OFFSET(A1,ROW(3:14)/3,MOD(ROW(3:14),3)))))ROW(3:14)/3生成1、1、1、2、2、2、3......
  • 洛谷P3224 [HNOI2012]永无乡 题解 splay tree 启发式合并
    题目链接:https://www.luogu.com.cn/problem/P3224主要知识点是:树上启发式合并,即每次合并将小的树里面的每个点合并大大的树里面,时间复杂度\(O(n\log^2n)\)。同时需要......
  • LeetCode HOT 100:合并区间
    题目:56.合并区间题目描述:给你一个二维数组,类似于[[1,3],[2,6],[6,10],[15,18]],其中每一个元素表示一个区间,区间0下标表示区间左边界,1下标表示区间右边界。题目要求......
  • day37_0617.合并二叉树
    0617.合并二叉树classSolution{public:TreeNode*mergeTrees(TreeNode*root1,TreeNode*root2){intval1=0,val2=0;if(root1!=NUL......
  • Git代码合并过程中解决代码冲突问题
    场景将功能分支feature-login合并到master分支 步骤1.切换到master分支gitcheckoutmaster2.将feature-login分支合并到mastergitmergefeature-login3......
  • 关于oracle开发中碰到的同列多行合并字符串的问题
    如何将Oracle中同一列的多行记录拼接成一个字符串?本人在oracle的存储过程的开发中,碰到了同一列的多行记录需要拼接成一个字符串进行存储,特此再次记录!1.可以使用wm_concat......
  • 如何合并Excel文档
    Excel文档在日常生活中用处非常广泛,常用于储存或批量编辑数据等。当电脑中存在多个Excel文档时,我们可以利用编程的方法合并相同类型的文档。这一方法也有助于我们分类管理或......