微信公众号:bigsai 前言 在排序中,我们可能大部分更熟悉冒泡排序、快排之类。对归并排序可能比较陌生。然而事实上归并排序也是一种稳定的排序,时间复杂度为O(nlogn). 归并排序是基于分治进行归并的,有二路归并和多路归并.我们这里只讲二路归并并且日常用的基本是二路归并。并且归并排序的实现方式有 ...
分类:
编程语言 时间:
2020-02-02 19:48:33
阅读次数:
100
点分治 [TOC] 点分治是一种基于树的重心,统计树上路径的优秀算法。将树上的路径分为经过树的重心和不经过树的重心两种,同时利用树的重心性质,使得递归深度不超过 $logn$次。总的时间复杂度为$nlog^2n$ 。 【题意】:poj_1741 求解一个树上所有边的和不超过k的共有多少个 c++ i ...
分类:
其他好文 时间:
2020-02-02 15:52:58
阅读次数:
57
辣鸡蒟蒻怎么今天才来敲这个模板题 好像还敲了很久的样子 (大雾) ...
分类:
其他好文 时间:
2020-02-01 10:46:34
阅读次数:
71
面试题13:剪绳子 题目描述 给你一根长度为n绳子,请把绳子剪成m段(m、n都是整数,n>1并且m>1)。每段的绳子的长度记为k[0]、k[1]、……、k[m]。k[0]\ k[1]\ …\ k[m]可能的最大乘积是多少? 例如当绳子的长度是8时,我们把它剪成长度分别为2、3、3的三段,此时得到最大 ...
分类:
其他好文 时间:
2020-01-31 21:13:09
阅读次数:
84
快速排序使用分治法(Divide and conquer)策略来把一个序列(list)分为较小和较大的2个子序列,然后递归地排序两个子序列。 步骤为: 挑选基准值:从数列中挑出一个元素,称为"基准"(pivot); 分割:重新排序数列,所有比基准值小的元素摆放在基准前面,所有比基准值大的元素摆在基准 ...
分类:
编程语言 时间:
2020-01-31 14:02:49
阅读次数:
71
归并排序(英语:Merge sort,或mergesort),是创建在归并操作上的一种有效的排序算法。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。 分治法: 分割:递归地把当前序列平均分割成两半。 集成:在保持元素顺序的同时将上一步得到的子序列集成到一起(归并)。 ...
分类:
编程语言 时间:
2020-01-31 14:00:22
阅读次数:
75
可持久化平衡树 圆方树 斯坦纳树 KD-tree 析合树 珂朵莉树 动态树 prufer序列 最小环 上下界网络流 LGV引理 弦图 矩阵树定理 树上启发式合并 (动态)树分治 最小树形图 图的着色 平面图 哈密顿图 lyndon分解 最小表示法 多项式加速递推 ...
分类:
其他好文 时间:
2020-01-31 10:46:04
阅读次数:
99
动态规划的重要性就不多说,直接进入正题 首先,我们看一下官方定义: 定义: 动态规划算法是通过拆分问题,定义问题状态和状态之间的关系,使得问题能够以递推(或者说分治)的方式去解决。 动态规划算法的基本思想与分治法类似,也是将待求解的问题分解为若干个子问题(阶段),按顺序求解子阶段,前一子问题的解,为 ...
分类:
编程语言 时间:
2020-01-30 17:23:25
阅读次数:
68
数据结构 1. 平衡树 2. 可持久化数据结构(主席树) 3. 莫队 4. LCT 5. 分治(点分治 + CDQ) 6. 树套树 DP 1. 后效性处理之高斯消元 2. 决策单调性 3. 树形DP(换根,倍增) 字符串 1. KMP(fail树,DP) 2. AC自动机 3. Trie(可持久化T ...
分类:
其他好文 时间:
2020-01-30 09:22:00
阅读次数:
95
多点求值 给出 $n$ 次多项式 $A(x)$ ,求出 $m$ 个 $x_i$ 对应的 $A(x_i)$ 考虑分治,设 $L(x)=\prod_{i=1}^{\frac{n}{2}}(x-x_i)$ , $R(x)=\prod_{i=\frac{n}{2}+1}^n(x-x_i)$ 对于 $i \i ...
分类:
其他好文 时间:
2020-01-29 23:53:56
阅读次数:
134