快速排序是基于分治策略的另一种排序算法,其基本思想是,对于输入的子数组a[p:r],按照以下3个步骤进行排序。 ...
分类:
编程语言 时间:
2019-09-13 20:26:31
阅读次数:
157
题目大意:给定长度为 $n 1$ 的序列 $g$,求 $f$ 序列,其中 $f$ 为 $$ f[i]=\sum_{j=1}^{i} f[i j] g[j] $$ 学会了分治 $fft$。 发现这个式子中也含有卷积,但是这是一个递推式,即:$f$ 数组是未知的。 考虑分治策略,即:假设已经算出区间 $ ...
分类:
其他好文 时间:
2019-08-31 00:47:54
阅读次数:
102
一、分治策略 “分而治之”,大问题能够拆成相似的小问题,记住这些小问题需要具有相似性。而后将小问题的每个解合成为大问题的解。所以说大问题如何拆,小问题如何合并才是这个算法最主要的一个思想。实际上很多算法如贪心算法,动态规划等等都是要求把大问题拆成小问题。而分治算法的重要一点就是要适用于能够重新把小问 ...
分类:
编程语言 时间:
2019-08-27 23:22:51
阅读次数:
108
master公式(也称主方法)是利用分治策略来解决问题经常使用的时间复杂度的分析方法,(补充:分治策略的递归解法还有两个常用的方法叫做代入法和递归树法),众所众知,分治策略中使用递归来求解问题分为三步走,分别为分解、解决和合并,所以主方法的表现形式: T [ n ]=a T[ n / b ] + T ...
分类:
其他好文 时间:
2019-08-22 11:11:51
阅读次数:
127
题目链接:https://www.luogu.org/problem/P1303 题目描述 求两数的积。 求两数的积。 输入格式 两行,两个数。 两行,两个数。 输出格式 积 积 输入输出样例 输入 #1复制 1 2 输出 #1复制 2 输入 #1复制 1 2 输出 #1复制 2 说明/提示 每个数 ...
分类:
其他好文 时间:
2019-08-17 16:27:12
阅读次数:
82
1.快速排序(QuickSort) 1.1 快速排序是对冒泡排序的一种改进。通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另一部分的所有数据都要小,然后再按照此方法对这两部分数据进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。 2.归并排序(MergeS ...
分类:
编程语言 时间:
2019-08-10 15:43:18
阅读次数:
113
【例1】大整数乘法。 编写一个程序,求两个不超过200 位的非负整数的积。 (1)编程思路。 大整数乘大整数,实质就是在小学竖式乘法的基础上枚举各个乘数位与被乘数相乘,累加到结果当中。其中乘数中的第j位与被乘数中的第i位相乘时,结果应该保存到结果的第i+j-1位中。 (2)源程序。 #include ...
分类:
其他好文 时间:
2019-07-17 09:28:21
阅读次数:
113
大整数乘法 POJ-1001 Exponentiation ...
分类:
其他好文 时间:
2019-04-06 13:52:50
阅读次数:
143
二分搜索算法是分支策略的典型应用,具体是在给定的有n个元素的已排序序列a中找出一个特定元素。 基本思想:将n个元素分为两半,取a[n/2]与x进行比较, 如果x<a[n/2],继续在数组a的左半部分搜索。 如果x>a[n/2],继续在数组a的右半部分搜索。 (图片源自百度图片) 查找算法对比: 1、 ...
分类:
其他好文 时间:
2019-02-28 23:12:22
阅读次数:
393
汉诺塔问题是一个经典问题。 题意理解:有A,B,C三个柱子,将A柱子上的N个盘子(从小到大排列)移到C柱子上,每次只允许移动一个盘子,并且保证每个柱子上的盘子的排列都是从小到大。 分析:由题意可知,如果要将A上的盘子移动到C,那么肯定需要借助C。 首先将A上的盘子从上到下依次编号为1-n。 运用整体 ...
分类:
其他好文 时间:
2019-02-28 21:11:03
阅读次数:
194