线段树 线段树(Segment Tree)是一种基于分治思想的二叉树结构,在区间进行信息统计。比区间划分的树状数组通用 1.线段树的每个节点代表一个区间。 2.线段树有唯一的根节点,即代表整个区间的结点。 3.线段树的叶节点代表一个长度为 1 的元区间。 4.对于内部节点 $[l,r]$ (非叶节点 ...
分类:
其他好文 时间:
2020-05-01 18:31:57
阅读次数:
51
import java.util.Arrays;/** * 归并排序(MERGE-SORT)是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。 * 将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序 ...
分类:
编程语言 时间:
2020-05-01 12:52:14
阅读次数:
61
一、基本概念 动态规划过程是:每次决策依赖于当前状态,又随即引起状态的转移。一个决策序列就是在变化的状态中产生出来的,所以,这种多阶段最优化决策解决问题的过程就称为动态规划。 二、基本思想与策略 基本思想与分治法类似,也是将待求解的问题分解为若干个子问题(阶段),按顺序求解子阶段,前一子问题的解,为 ...
分类:
其他好文 时间:
2020-04-30 20:57:03
阅读次数:
137
分治算法思想 将问题分为k个子问题,对这k个子问题分别求解。如果子问题的规模仍然不够小,则每个子问题再划分为k个子问题,如此递归的进行下去,直到问题规模足够小,很容易求出其解为止。 问题分析 这个问题的时间复杂度我似懂非懂,想知道其中的具体过程的请自行百度。 对于两个数字X、Y,传统计算方式的时间复 ...
分类:
编程语言 时间:
2020-04-30 11:55:12
阅读次数:
109
思路:https://leetcode-cn.com/problems/maximum-subarray/solution/zheng-li-yi-xia-kan-de-dong-de-da-an-by-lizhiqiang/ 思路一:分治法 分治法基本思路: 1.分解:把原问题分解成若干个大小相近 ...
分类:
其他好文 时间:
2020-04-30 09:34:20
阅读次数:
55
归并排序 归并排序是采用分治法的一个非常典型的应用。归并排序的思想就是先递归分解数组,再合并数组。 将数组分解最小之后,然后合并两个有序数组,基本思路是比较两个数组的最前面的数,谁小就先取谁,取了后相应的指针就往后移一位。然后再比较,直至一个数组为空,最后把另一个数组的剩余部分复制过来即可。 ...
分类:
编程语言 时间:
2020-04-29 00:46:58
阅读次数:
74
"题面" 题解 提供两种方法 线段树分治 将一个物品可以购买的时间区间打到线段树上 考虑对于每一个点如何算贡献 从线段树的根开始做 01 背包 向下递归时记得撤销不同区间的影响 这样每一次询问只会算 $log(t)$ 次, 每一个物品, 只会在 $log(t)$ 段区间中被计算 每次计算的复杂度是 ...
分类:
其他好文 时间:
2020-04-28 20:27:52
阅读次数:
63
动态点分治复习 算法思路 大概就是让一个点管辖一堆点,并构成父子关系,以维护一些东西。发现使重心为管辖点最好。点分树有几个性质,树高logn,可以暴力爬树维护。并且注意这里的父子关系可能在原树上离得很远,要注意区分。 关于写法 写两棵树的全局变量非常麻烦,可以封装结构体。注意有时候tree1和tre ...
分类:
其他好文 时间:
2020-04-28 10:07:46
阅读次数:
55
分治算法(1):二分查找!昨天刚说不写算法了,但是突然想起来没写过分治算法的博客,所以强迫症的我…… STL函数库第五弹——二分函数lower_bound()、upper_bound()、binary_search() 由于笔者比较懒,所以把分治算法(二分查找篇)和STL第五弹放在一起。。。 Par ...
分类:
编程语言 时间:
2020-04-26 01:42:28
阅读次数:
75