编程基础
scanf printf
cin cout
cin cout 自动判断变量类型
cin 输入字符串也是遇到空格或者回车就结束
解决方案:
全局区域的数组默认为零
取消同步流
由于cin和cout需要自动判断变量类型等内部原因,读写效率更低,当数据量较大时,可能导致程序运行超时。
我门可以取消同步流 来加速cin 和cout 加速后效率相差无几。
基本操作
竞赛常用库函数
大小写转换
islower isupper 判断字符是否为大小写字母
islower(ch1) isupper(ch1) 函数返回值为bool类型
tolower 和 toupper函数 转换为大小写字母
ascii
A65 a 97
实现大小写的转换
排序sort
sort算法: 时间复杂度O(nlogn) 默认升序排序
sort(起始地址 结束地址的下一位)
升序和降序输出对应的字符
其他库函数
memset()函数 用于设置内存块值的函数, 定义如下: void * memset(void * ptr(指向要设置值的内存块的指针),int value(要设置的值,通常是一个整数,8位二进制整数),size_t num(重置,要设置的字节数Byte=8bit));
swap(T &a,T &b)函数 : 接受两个参数
a:交换值的第一个变量的引用
b:交换值的第二个变量的引用
swap函数可以实现任意类型的变量,包括基本类型、自定义类型等。
reverse(first,last)函数: first:指向容器中要反转的第一个元素的迭代器
last:指向容器中要反转的最后一个元素的下一个位置的迭代器
reverse(first,last)函数将(first,last)范围内的元素顺序进行反转。
unique()函数:去除多余的变量;
全排列
next_permutation()函数
用于生成当前序列下一个排列,按照字典序对序列进行重新排序,如果存在下一个排列,则当前序列更改为下一个排列,并返回true.
prev_permutation()函数
最值查找
min(a,b) 返回a和b中较小的那个值,只能传入两个值,或者传入一个列表。
min_element和max_element函数
例如: min_element(st,ed)返回地址(st,ed)中最小的那个值的地址(迭代器),传入参数为两个地址或迭代器
时间复杂度O(n),n为数组大小(由传入的参数决定)
nth_element()函数
二分查找
库函数只能度数组进行二分查找
对一个数组进行二分查找的前提是这个数组中的元素是单调的,一般为单调不减,当然如果是单调不增也可以(需要修改比较函数),可以元素相等。
binary_search函数 再议排序的序列中找找特定元素,通过二分查算法来确定序列中是否存在目标元素。函数返回bool值(true/false)。
lower_bound(st,ed,x) 返回地址(st,ed)中第一个大于等于x的元素的地址。
upper_bound(st,ed,x) 返回地址 (st,ed)中第一个大于x的元素的地址。
相当于左闭右开
STL库函数
vector容器
应用:将元素置于一个动态数组中加以管理的容器
vector可以随机存取元素,在尾部添加或移除元素非常迅速,在中部或头部插入元素或移除元素比较费时。