2015区域赛北京赛区的三水,当时在赛场上没做出的原因是复杂度分析不正确导致把方法想复杂了。近来复习复杂度分析,觉得不能只是笼统地看渐进复杂度(big-O),更应根据算法的伪码计算真正的以基本操作数为变量的时间复杂度T(n)。 题意:在二维坐标系第一象限中,将一块顶点在原点边长为R的正方形土地用直线
分类:
其他好文 时间:
2016-02-03 01:05:33
阅读次数:
263
为什么要进行算法分析?
预测算法所需的资源
计算时间(CPU 消耗)内存空间(RAM 消耗)通信时间(带宽消耗)
预测算法的运行时间
在给定输入规模时,所执行的基本操作数量,或者称为算法复杂度(Algorithm Complexity)
如何衡量算法复杂度?
内存(Memory)时间(Time)指令的数量(Number of Steps)特定...
分类:
编程语言 时间:
2015-08-02 21:44:16
阅读次数:
213
示例代码(1)
decimal Factorial(int n)
{
if (n == 0)
return 1;
else
return n * Factorial(n - 1);
}
【分析】
阶乘(factorial),给定规模 n,算法基本步骤执行的数量为 n,所以算法复杂度为 O(n)。
示例代码(2)
int FindMaxElement(int[] array)
{
int max = array[0]...
分类:
编程语言 时间:
2015-08-02 21:43:05
阅读次数:
174
首先是从二叉搜索树开始,一棵二叉搜索树的定义是:1.这是一棵二叉树;2.令x为二叉树中某个结点上表示的值,那么其左子树上所有结点的值都要不大于x,其右子树上所有结点的值都要不小于x。由二叉搜索树的第二条定义,可以很方便地利用这种特点在二叉树中以O(logn)的渐进复杂度完成插入、查找、删除等操作。但...
分类:
其他好文 时间:
2015-03-09 15:37:16
阅读次数:
181
权值分块,虽然渐进复杂度不忍直视,但其极小的常数使得实际运行起来比平衡树快,大多数情况和递归版权值线段树差不多,有时甚至更快。但是被zkw线段树完虐。 1 #include 2 #include 3 #include 4 using namespace std; 5 #define N 100000...
分类:
其他好文 时间:
2014-11-14 17:41:35
阅读次数:
241