树形结构
文章平均质量分 88
龙卡卡卡
这个人很懒,连个include都没写
展开
-
HDU-2196 树形DP学习笔记
树形dp特指在树这种数据结构上进行的DP。由于树本身具有子结构的性质(树和子树),很适合用来做递归和递推,符合dp的性质。树形dp中用的比较多的是dfs算法,需要熟练掌握树的几种表示方法和树的遍历方式。对于一棵有根树,对于给定的边权值(自然数),求距离每一个结点最远的结点的距离。首先考虑一下暴力算法怎么做。暴力算法的做法即 对于每于一个结点,将该结点作为根结点求一次到所有叶子结点的距离,然后取最大值。...原创 2022-07-03 23:18:30 · 275 阅读 · 1 评论 -
[蓝桥杯][2019年第十届真题]修改数组 (线段树|并查集)
题目描述 链接:https://www.dotcpp.com/oj/problem2301.html 给定一个长度为 NNN 的数组 AAA = [A1A_1A1, A2A_2A2, · · · ANA_NAN ],数组中有可能有重复出现的整数。 现在小明要按以下方法将其修改为没有重复整数的数组。小明会依次修改 A2A_2A2,A3A_3A3,··· ,ANA_NAN。 当修改 AiA_iAi 时,小明会检查 AiA_iAi 是否在 A1A_1A1 ∼ Ai−1A_{i−1}Ai−1 中原创 2021-01-31 22:49:13 · 317 阅读 · 0 评论 -
HDU 1255(线段树&离散化&扫描线)详细解析
题目链接 题目解析: 该题目要求 求取众多矩形重叠部分的面积,可以采用扫描线的方法来解决。 扫描线 首先来看一个利用扫描线实现的 计算所有矩形覆盖区域面积(不算重复面积)的求解过程。 在下图中,利用蓝线从下往上扫描所有的平行于x轴的边,当接触到的是下边的时候,将该边对应的区间值都加上1(表示该区域又覆盖了一次),接触到上边的时候,减去1(该区域少覆盖一次)。 而每次扫描到边的时候,将所有上一次值不为0的区间(处于覆盖状态的区间)的区间长度和 lenlenlen 乘以两次扫描的高度差(hi−hi−1h_{i原创 2021-01-19 17:58:25 · 473 阅读 · 2 评论 -
B-树基本操作的实现 利用C++模板类封装
程序还未经过严格的测试,不能保证完全正确,仅作为学习参考。 注释感觉还比较详细,我就不多bb了,直接上代码 /* 项目名:B-树 作者:龙卡 完成时间:2020/12/21 0:04 个人感受:手撕B-树真的太难了,要想写好还得在每一步把所有可能的情况全部考虑完,调试过程中遇到的最严重的bug就是par指针 的维护不到位,有很多情况没有维护好,导致出了bug。本来以为会让做平衡二叉树的实验,结果直接上B-树,只能说 “老赵,可真有你的” */ #include<iostream> #includ原创 2020-12-21 00:46:42 · 1246 阅读 · 5 评论