ICode9

精准搜索请尝试: 精确搜索
  • 点分治学习笔记2021-04-12 23:01:14

    大家好,今天我们来聊聊淀粉质点分治。 又开了个有点大的坑( 点分治是一种针对树上路径问题的强有力的算法。一般看到”求树上任意两点之间的路径xxx的最大值“或”求树上任意两点之间的路径xxx的和“,那这题八成就是点分治了。 那么点分治究竟是个什么玩意儿呢?我们不妨先来看道例题:P3

  • 做题记录节选2021-04-08 22:33:49

    目录做题记录节选2021-4-1CF1404D Game of Pairs2021-3-30CF1392E Omkar and DuckCF750F New Year and Finding Roots2021-3-29CF1205C Palindromic PathsCF1174F Ehab and the Big Finale2021-3-19CF521D ShopAGC023D Go Home2021-3-9CF436E Cardboard Box2021-3-6CF715E Complet

  • 110. 平衡二叉树2021-04-08 14:32:10

        暂时没有想到非递归的方法,这里用递归来处理了 根据题目的定义,我们可以通过计算每一棵子树的左右高度差, 只要有一个子树不平衡,则整体不平衡(这里有个优化小细节,我们以-1为标记位,当出现-1则整棵树 不平衡,不需要再做后续判断) 时间O(n),空间O(n) public boolean isBalanced

  • Chloe and pleasant prizes CodeForces - 743D2021-04-07 02:33:02

    原题链接 考察:树形dp 思路:         参考大佬的思路,本蒟蒻还以为是有依赖的背包问题,但是直接开背包数组会MLE.         定义f[i]为以i为根节点的子树中,最大的结点和.f[i] = max(f[i],f[j](j为i的所有直接或间接的子节点)).         这道题是选两个不相干的最大子

  • 【UR #20】跳蚤电话2021-04-05 10:01:22

    题意 uoj 做法 第一次打uoj比赛,居然有签到题,体验良好qwq 容易观察到,一个点一旦加入\(S\)就不会再出来,且边形成了一个虚树。 任意时刻,操作为在虚树中的某条边中间选取一个点加进来,或在外面选取一个点,与虚树的一个叶子连边。 自然的,会想到对于一棵树,目前\(S=\{root\}\),枚举一个点\(x

  • 树和图的存储2021-04-04 13:33:06

    1、树和图的存储 有两种存储方式,树是一种特殊的图,无环连通图。所以只讨论图的存储方式。 图分为有向图和无向图。无向图a—b可以看作有向图a\(\to\)b和b\(\to\)a,所以无向图也可以看作一种特殊的有向图。 这样只需要考虑有向图就可以了。 1.1 邻接矩阵存储 其实就是开了一个二维数

  • 简单树上问题2021-04-03 10:04:44

    目录P1099P5659P5666 P1099 直接把直径揪出来从一边到一边扫过去就行了。 【记录】 P5659 按照字典序贪心,对每个点维护相邻的边的删除顺序, 实际上细节并不多。 【记录】 P5666 考虑计算每个点作为重心的次数。 首先把随便一个重心拿出来做根, 然后显然 x 要想作为重心就不能切 x

  • 剑指Offer55-II题解-平衡二叉树2021-03-20 16:57:21

    问题描述 输入一棵二叉树的根节点,判断该树是不是平衡二叉树。如果某二叉树中任意节点的左右子树的深度相差不超过1,那么它就是一棵平衡二叉树。 示例 1: 给定二叉树 [3,9,20,null,null,15,7] 3 / \ 9 20 / \ 15 7 返回 true 。 示例 2: 给定二叉树 [1,2

  • leetcode 判断相同的树,判断一个树是否是另一个树的子树(详解)2021-03-17 23:01:11

    题目描述 给你两棵二叉树的根节点 p 和 q ,编写一个函数来检验这两棵树是否相同。 如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。 相同的树 解题思路 首先如果两个树都是空的话,那么这两个树,肯定就是相等的,如果只有一个是空,那么这两个树肯定就是不相等的,如

  • PAT 1020 1119 洛谷1229 二叉树的遍历、递归与分治2021-03-17 22:00:42

    PAT 1020 1119 洛谷1229 二叉树的遍历、递归与分治 知识复习 先说结论 根据前序中序可以唯一确定后序或者层序 根据后序中序可以唯一确定前序或者层序 当二叉树的每个节点都不会只有一个孩子时,根据前序后序可以唯一确定中序或者层序 上述确定过程不需要实际建树 二叉树的三种

  • 树和二叉树2021-03-16 19:04:02

    一、树(Tree) 树是一种以分支关系定义的层次结构,树是n(n>=0)个结点的集合。在任意一棵非空树中,有且仅有一个根结点。n>1时,除去根结点外,其他结点由m>0棵互不相交的子树构成。从而可以看出,树的结构定义是一个递归的定义,即在树的定义中又用到了树的定义。 1、树及其结点的相关性质

  • 堆-原理到应用——用最简单的代码让你读懂堆2021-03-15 23:59:42

    堆-原理到应用 文章目录 堆-原理到应用堆的介绍堆的实现如何存储一个堆如何将一个数组变成一个堆 堆的介绍 完全二叉树:完全二叉树是满二叉树去除最后N个节点之后得到的树( N ≥

  • 判断二叉树是不是另外一个二叉树的子树2021-03-14 19:33:46

    输入两棵二叉树A和B,判断B是不是A的子结构。(约定空树不是任意一个树的子结构) B是A的子结构, 即 A中有出现和B相同的结构和节点值。 class Solution { public: bool checkChildTree(TreeNode* A, TreeNode* B) { if ((A == NULL) != (B == NULL)) { retur

  • 【考试总结2021-03-13】花谢2021-03-13 19:02:45

    A. 小A的树 树上路径问题首选点分治,然后二分最后最小的距离 考虑经过当前分治重心的路径,记录子树里面的点到它的距离和它属于哪个子树 然后按照距离排序 对于当前的二分距离 \(lim\) ,扫所有点分树上的点对,考虑合法的区间长度是单调的,也就是 \(l\) 在不断增加的过程中 \(r\) 是减小

  • 树形DP——洛谷 P11222021-03-13 11:03:59

    树形DP——洛谷 P1122 这道题也是通过dfs来对树进行遍历,通过回溯的方式先把一个树的所有子树的值求出来,然后如果这个子树是负值那么加入到树会让树的总值变小,如果是正值则加入。所以通过算出这个树的所有子树的值,进行有选择的加入这个树,然后算出这个树的值。 但是这个方法有个缺点

  • 总结学习二叉树12021-03-13 10:30:25

    二叉树的相关知识之前比较零碎的学习了一遍, 时间久了,对很多细节遗忘比较严重, 所以,详细总结一遍. 1. 树 1.1 结点概念    结点 数据结构的基础, 是构成复制数据结构的基本单位. 1.2 树的概念   树是一种非线性的数据结构,它是由n(n>0)个有限节点组成的具有层次结构

  • 剑指offer——平衡二叉树2021-03-07 12:33:07

    题目描述 输入一棵二叉树,判断该二叉树是否是平衡二叉树。 在这里,我们只需要考虑其平衡性,不需要考虑其是不是排序二叉树 平衡二叉树(Balanced Binary Tree),具有以下性质:它是一棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。  方法: 从下往

  • COCI 2020/2021 CONTEST #2 解题报告2021-03-07 09:33:10

    Euklid 作为一道构造题,我们先来手玩一下这个 \(R(a,b)\),发现并没有什么规律( 再来看数据范围:\(h,g\leq 2\times 10^5\)。为了尽可能简单的构造,我们自然希望 \(R(a,b)\) 恒有 \(a\geq b\),这样除法次数最少为 \(\log 200000<20\)。 \(\gcd\) 相关的这一部分比较好构造,先构造这一部分

  • Java---判断一棵树是否为平衡二叉树2021-03-04 20:05:56

    Java—判断一棵树是否为平衡二叉树 思路:从根节点开始,先判断左右子树的高度差是否超过1,然后接着判断左右子树是否是平衡二叉树 代码实现: /** * @Author shall潇 * @Date 2021/3/4 * @Description 平衡二叉树就是左子树和右子树的高度差不能超过1,且左右子树必须是平衡二叉树

  • 树形背包思考模型2021-03-01 12:00:39

    树形背包常用思考模型 模型一 首先对于每个节点我们在dfs中dp转移时可以想象成一个分组背包,每次新遍历一个子树就可以想象成一个分组背包的下一组,转移时利用之前的背包状态进行转移,如果觉得这个模型比较难理解可以看下面的模型二 模型二 首先对于每次新遍历一个结点我们都可

  • 2021-02-282021-02-28 14:01:46

    BTree,B-Tree,B+Tree,B*Tree都是什么 B树、B-树、B+树、B*树都是什么   B树        即二叉搜索树:        1.所有非叶子结点至多拥有两个儿子(Left和Right);        2.所有结点存储一个关键字;        3.非叶子结点的左指针指向小于其关键字的子树,右指

  • 二叉排序树,平衡二叉树,哈夫曼树——增删改查2021-02-17 21:31:44

    二叉排序树 Binary Search Tree,二叉查找树——左子树所有节点关键字均小于根节点;右子树的所有节点关键字均大于根节点;左、右子树均为二叉排序书;节点本身的关键字唯一。 中序遍历序列是递增的有序序列 查找 (1)二叉树非空的时,查找根节点,若相等则查找成功 (2)若不等,则当小于根节点

  • AtCoder Regular Contest 112 C - DFS Game2021-02-15 16:32:53

    树上DP,考虑到先后手变化只和子树大小有关,因为每条边走两次,点走一次; 令dp[u]为拿u点coin的情况下对于整个子树,两人的硬币差会是多少,那么对于另一方而言,先选择不交换先后手并且对自己更好的子树(即dp[v] < 0),然后和另一方轮流选择子树,两方都会选择dp[v]尽可能最小的让自己的尽可能的

  • AtCoder Regular Contest112 解题报告2021-02-14 06:32:48

    A 直接推式子 \(\sum_{i=L}^{R-L} R-(L+C)+1\) 那么分开统计即可 B 显然答案覆盖的是不超过两个连续区间,考虑是正的时候 \(-1\) 完了减少可以让绝对值变大,直接减少可以让绝对值变小,类似负的时候 那么特判连到一起的情况,简单题 C 先需要把这个游戏的一些性质玩清楚 其实这个先后手

  • 树的重心2021-02-13 17:03:23

    树的重心 1.定义 如果树上的某一个节点的最大子树的节点数最小,那么这个节点就是树的重心。 2.性质 删除重心后所得的所有子树,节点数不超过原树的1/2,一棵树最多有两个重心; 树中所有节点到重心的距离之和最小,如果有两个重心,那么他们距离之和相等; 如果两棵树通过一条边合并,新的重心

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有