ACM课堂笔记
#打卡第 1^n 天
一、竞赛常用语言
- C++(效率高、code速度快)
万能头文件:#include<bits/stdc++.h>(绝大多数比赛禁用) - 少数使用Java,存放大数据时可用
- Python(兼容度不高)
二、时间复杂度:
- 用函数T(n)表示当问题规模(需要处理的数据量)为n时,算法中的基本操作需要执行的次数;引入其同量级函数f(n)(即n趋于无穷时,有T(n) / f(n) = C,其中C为任意非零常数),记作T(n) = O(f(n)); O(f(n))即称为算法的“渐进时间复杂度”,简称为时间复杂度。
- 时间复杂度只保留最高项,忽略常数。
- 常见算法的复杂度O(n) O(n^2) O(nlogn) O(2^n)。
三、STL(Standard Template Library)
- 容器(Container),是一种数据结构,如string,vector,和quque ,以模板类的方法提供。为了访问容器中的数据,可以使用由容器类输出的迭代器;
- 迭代器(Iterator),提供了访问容器中对象的方法。例如,可以使用一对迭代器指定list或vector中的一定范围的对象。(迭代器就如同一个指针,C++的指针也是一种迭代器)
- 算法(Algorithm),是用来操作容器中的数据的模板函数。例如,sort 、reverse、 next_permutation等等。
四、容器的具体使用
-
string
动态长度字符串
构造函数: string s1=“1234”
迭代器:string::iterator it=s1.begin()
常用函数:clear() length() push_back() append() find() erase() -
vector
(动态数组,内存连续)
构造函数:
vectorv1;vectorv2(“1234”);vecotrv3(5,2);vectorv4(v3);
常用函数:push_back() pop_back() front() back() insert() erase() size()
可以随机访问 访问O(1) 删除O(n) -
queue (队列,FIFO)
先进先出 打印机、排队队伍
构造函数:queuequ;
常用函数:push() pop() front() back() size() empty() -
stack
(堆栈,FILO)
构造:stackst
常用方法:push(); pop(); top(); size(); empty(); -
set
(集合)
构造:setse
内部元素有序排列,且不会重复
常用方法:find(); erase(); size(); clear();insert();count(); -
map
(建立key-value对应关系)
构造:map<int,int>mp //<key的类型,value的类型>
随机访问:像数组一样通过mp[key]访问对应value;对同一key赋值会覆盖旧值,若该key并无对应value则返回0
常用方法:find(); erase(); size(); clear(); -
list
(双向链表)
构造:listli
不支持随机访问
常用方法:push_back(); push_front(); pop_back() ;pop_front(); insert(); erase();