1.数据结构与算法初探 (1)什么是数据结构 a.“摆放图书”例子 b.逻辑结构与存储结构 c.抽象数据类型 (2)什么是算法 算法的定义 算法的特性和设计要求 算法的度量方法(时间复杂度 & 空间复杂度) (3)算法优化——最大子列和 算法1:三重循环 算法2:两重循环 算法3:分治 算法4:在线 ...
分类:
编程语言 时间:
2020-07-04 01:14:59
阅读次数:
83
题目链接 题解 考虑对于一个节点,其所有的路径分为两种:经过根节点和不经过根节点。运用点分治就可以每次计算对于当前树而言,经过根的总贡献。而剩余没有经过根的部分,则在删到根节点形成新的树之后递归求解,这样一定是可以做到不重不漏的。 接下来,就该考虑如何统计贡献。假设先将根节点定为起点,那么在一条路径 ...
分类:
其他好文 时间:
2020-07-03 19:32:11
阅读次数:
55
###题目描述 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。 ###题目解析 采用分治法的思想,找到根结点、左子树的序列、右子树的序列,分别判断左右子序列是否为二叉树的后序序列。 后序遍历序列的最后一个元素 ...
分类:
其他好文 时间:
2020-07-03 12:15:58
阅读次数:
60
快速排序 分治 ①确定分界点:q[l],q[(l+r)/2],q[r] ②调整范围 ③递归处理左右两段 #include<iostream> using namespace std; const int N = 1e5+10; int n; int a[N]; void quick_sort(int ...
分类:
编程语言 时间:
2020-07-02 11:55:45
阅读次数:
58
LINK:平面最近点对 加强版 有一种分治的做法 因为按照x排序分治再按y排序 可以证明每次一个只会和周边的六个点进行更新。 好像不算很难 这里给出一种随机化的做法。 前置知识是旋转坐标系 即以某个点位旋转中心旋转某个点的位置。 设旋转中心为(x2,y2). 旋转公式:x=(x1-x2)cos(a) ...
分类:
其他好文 时间:
2020-07-01 15:45:54
阅读次数:
74
本文涉及:cdq分治、MST 一道十分精妙的cdq分治题(o゜▽゜)o。据说线段树分治+LCQ维护MST也是一种解法,但我并不会... 1 题意 给定一个$n$个点,$m$条边的无向带边权的图,和$q$次询问;每一次询问会修改一条边的边权;在每一次询问后求出当前图的最小生成树的权值。 数据范围:\( ...
分类:
其他好文 时间:
2020-06-29 23:05:15
阅读次数:
87
汉诺塔运用到了分治的思想,把一个完整的塔给拆分成了两个部分: 假设一个塔有n各部分,那么将其分为两个部分:前n-1块为上半部分,第n个(即最下面一个为下半部分) 想要把上下两层的汉诺塔完整的移动到第三个轴处,只需要将上一层(n-1层)先从A柱借助C柱移动到B柱,然后把下半层(n层)移动到C柱,最后将 ...
分类:
编程语言 时间:
2020-06-29 18:53:17
阅读次数:
121
###题目描述 二叉树是一种基本的数据结构,它要么为空,要么由根节点,左子树和右子树组成,同时左子树和右子树也分别是二叉树。 当一颗二叉树高度为 \(m?1\) 时,则共有 \(m\) 层。除 \(m\) 层外,其他各层的结点数都达到最大,且结点节点都在第 \(m\) 层时,这就是一个满二叉树。 现 ...
分类:
其他好文 时间:
2020-06-29 09:52:35
阅读次数:
50
bzoj4182/luoguP6326 Shopping(点分治,树上背包) bzoj它爆炸了。 luogu 题解时间 如果直接暴力背包,转移复杂度是 \(m^{2}\) 。 考虑改成点分治。 那么问题来了点分治有什么优点呢? 每次从分治中心开始搜索进行dp,保证从根到当前点都被购买至少一件。 这样 ...
分类:
其他好文 时间:
2020-06-28 22:25:24
阅读次数:
66