题意:给定n=ty则统计vy[y][0]~vy[y][ty-1]的所有y是否符合。方法类似。 这样最坏情况下应该跟分块的复杂度差不多吧(不会证明)code: 1 #include 2 #define M0(x) memset(x, 0, sizeof(x)) 3 #define MP mak...
分类:
其他好文 时间:
2014-11-01 01:01:13
阅读次数:
359
1、归并排序
分治思想:每次从中间分开为两个子问题,对每个子问题排序完成之后,将两个已排序的部分进行归并操作即得到最终排序的结果。
(1)如果数组S中元素个数为0或者1返回
(2)选取中间位置的元素下标,对左半部分SL递归排序,对右半部分SR递归排序
(3)将排好序的SL、SR进行归并后返回最终结果
平均时间复杂度O(NlogN),最坏情况也为O(NlogN),最好情况为O(N)。
...
分类:
编程语言 时间:
2014-10-30 23:57:55
阅读次数:
470
题目大意:给定n个连在一起的木棍,分成m+1段,使每段最大值最小,求最大值的最小值及最大值最小时分割的方案数
第一问水爆了……二分答案妥妥秒过
第二问就有些难度了 首先我们令f[i][j]表示用前j个棒♂子得到i段的方案数
诶我没打什么奇怪的符号吧
于是我们有动规方程
f[i][j]=Σf[i-1][k] (sum[j]-sum[k]
这个最坏情况下是O(m*n^2)的,肯定挂
...
分类:
其他好文 时间:
2014-10-28 18:03:25
阅读次数:
178
1、折半搜索算法
(1)算法代码:
(2)复杂性分析
任何一种以比较为基础的搜索算法, 在最坏情况下所用的时间都不可能低于 (log ) n ? ,因此,也就不可能存在最坏情况下所需时间比折半搜索数量级还低的算法。
2、排序问题
2.1归并排序算法
(1)归并排序算法思想
该算法采用分治方法, 将要排序的数组分成两部分, 先对每部分进行排序,然后将两部分的...
分类:
编程语言 时间:
2014-10-25 21:35:00
阅读次数:
246
目录 1、问题的引出-求第i个顺序统计量2、方法一:以期望线性时间做选择3、方法二(改进):最坏情况线性时间的选择4、完整测试代码(c++)5、参考资料内容 1、问题的引出-求第i...
分类:
编程语言 时间:
2014-10-24 00:02:48
阅读次数:
640
快排实现基本思想:取个关键key值对整个序列进行比较,大的放一边,小的放另一边(这就分成两个序列了)。然后继续对两个序列(分开的)进行递归比较,最后实现整个序列的排序。最坏情况的时间复杂度为O(n2),最好情况时间复杂度为O(nlog2n).package com; //快速排序public ...
分类:
编程语言 时间:
2014-10-23 10:37:27
阅读次数:
173
题意:求平面上的最远点对距离的平方。分析:对于这个数据量枚举肯定是要超时的。首先这两个点一定是在凸包上的,所以可以枚举凸包上的点,因为凸包上的点要比原来的点会少很多,可最坏情况下的时间复杂度也是O(n2).于是就有了旋转卡壳。可以想象有两条平行直线紧紧地夹住这个凸包,那直线上的点就是对踵点对。对踵点...
分类:
其他好文 时间:
2014-10-20 22:43:24
阅读次数:
246
前言
二叉排序树(又称二叉查找树、二叉搜索树),在进行查找、插入及删除操作时其平均时间复杂度为O(logn),但是它们的最坏时间复杂度都是O(n)和顺序查找的效率相同,出现这种情况的原因在于它们虽然对关键字值进行了排序,但是并没有对树的形状进行限制。即当关键字序列有序时,就会出现这种最坏情况(单侧的二叉树),平衡二叉树的引入就可以对其进行有效调整。例如:对于关键字序列(12,24,...
分类:
其他好文 时间:
2014-10-16 18:21:53
阅读次数:
280
求给定输入中第k大的数的算法。这是一个常见面试题,通常的解法也很明显,使用类似快排的思想。每趟运行,把数组的值分成两部分,一部分比pivot大,一部分比pivot小,因为我们知道pivot在数组中的位置,所以比较k和pivot的位置就知道第k大的值在哪个范围,我们不断的进行recursion, 直到...
分类:
编程语言 时间:
2014-10-16 13:02:32
阅读次数:
404