一.时空复杂度的分析
1.时间复杂度
时间复杂度:程序运行会消耗多少时间。
在此,为了方便讨论,我们假定每一个语句消耗的时间一样,视为一个时间单元。
#include <iostream>
using namespace std;
int main()
{
int n = 100;//执行1次
for(int i = 0; i < n; i ++)//i=0执行1次 i < n要判断n+1次 i++要执行n次
{
cout << "gzmuyyds" << endl;//输出n次
}
}
/*
所以本程序一共会执行3n + 3次
在此得到一个问题规模n和所花费的时间的函数T。
T(n) = 3n + 3
问题规模n 1 10000
3n + 3 6 30003
3n 3 30000
n 1 10000
用O(n)来表示该程序的是时间复杂度。
*/
- 由上,我们得出怎么计算一个程序的时间复杂度呢?
1.忽略常数项。
2.忽略系数。
3.只保留最高项。 - 常见的时间复杂度:从小到大依次是:O(1)<o(logn)<O(n)< O(nlogn)<
O
(
n
2
)
O(n^{2})
O(n2)<
O
(
n
3
)
O(n^{3})
O(n3)<
O
(
2
n
)
O({2}^{n})
O(2n)<O(n!)
应用:
1.由题目数据范围判断编写的代码是否会TLE。
2.通过题目数据范围反推算法:yxc博客
例题:
2.空间复杂度
绝大多数情况下不会卡,没啥用。
二.寒假相关安排
1.寒假算法课计划(集训队内大一、大二同学必须参加,大三、大四同学不强制要求参加)
- 授课内容:基础数据结构、基础算法、基础图论与搜索、基础动态规划、基础数论。
- 授课时间:从12.19开始,每周三次课(具体时间会提前通知),当然过年期间会放假。
- 授课形式:直播(每次课之后会有录播)+课后作业+课后总结(博客),每次的上课会严格记录考勤。要请假的务必请假并提供相关依据。ps:如果你认为你的水平已经足够高或者有自信,可以自学,可以申请不来上课,但是课后作业和课后总结,必须完成。
ps:
下学期的参赛资格分配原则:
按综合测评和假期表现加权排序,由高到低。
大一、大二同学:综合测评 * 0.7 + 假期表现 * 0.3
大三、大四同学:综合测评 * 0.7 + 假期平均表现 * 0.3假期综合表现评定标准:
1.直播课考勤 20%
2.课后作业及完成情况 70%
3.蓝桥杯训练营、XCPC训练营作为加分项占 10%2.牛客寒假训练营(自费参加,50RMB六场比赛)
训练营介绍页- 题目质量还是挺高的。大家感兴趣的可以参加。
3.XCPC训练营
旨在想参加XCPC的同学,强度很高,难度很大。
梯子:http://sakura-cat.net
《算法竞赛从入门到进阶》相关博客推荐
1.部分知识讲解+部分题解
2.本书所有题目题解