跳转至

常用内容

约 959 个字 预计阅读时间 3 分钟

C语言/C++数据类型有效范围表

类型 范围
char 1 个字节 -128 到 127 或者 0 到 255
unsigned char 1 个字节 0 到 255
signed char 1 个字节 -128 到 127
int 4 个字节 -2147483648 到 2147483647
unsigned int 4 个字节 0 到 4294967295
signed int 4 个字节 -2147483648 到 2147483647
short int 2 个字节 -32768 到 32767
unsigned short int 2 个字节 0 到 65,535
signed short int 2 个字节 -32768 到 32767
long int 8 个字节 -9,223,372,036,854,775,808 到 9,223,372,036,854,775,807
signed long int 8 个字节 -9,223,372,036,854,775,808 到 9,223,372,036,854,775,807
unsigned long int 8 个字节 0 到 18,446,744,073,709,551,615
float 4 个字节 精度型占4个字节(32位)内存空间,+/- 3.4e +/- 38 (~7 个数字)
double 8 个字节 双精度型占8 个字节(64位)内存空间,+/- 1.7e +/- 308 (~15 个数字)
long long 8 个字节 双精度型占8 个字节(64位)内存空间,表示 -9,223,372,036,854,775,807 到 9,223,372,036,854,775,807 的范围
long double 16 个字节 长双精度型 16 个字节(128位)内存空间,可提供18-19位有效数字。
wchar_t 2 或 4 个字节 1 个宽字符

比赛常用的非标准头文件

#include <bits/stdc++.h>

#include <bits/stdc++.h>是一个非标准的头文件,主要由 GNU C++ 编译器(g++)提供。它的设计目的是为了方便竞赛编程,允许程序员通过一个指令包含所有标准库头文件。这个头文件包含了几乎所有C++标准库的头文件,从而减少了在编写代码时需要手动包含多个头文件的麻烦。

由于它是非标准的,使用这个头文件在实际项目中并不推荐,因为它会增加编译时间和文件依赖。这个头文件通常只在编程竞赛和练习中使用,以提高开发速度和方便性。常见的包含内容有:

<iostream>用于输入输出、<vector>用于动态数组、<algorithm>用于常见算法、<cmath>用于数学函数、<string>用于字符串操作、<map><unordered_map>用于映射容器、<set><unordered_set>用于集合容器、<queue><stack>用于队列和栈、<deque>用于双端队列以及其他常用的STL头文件

根据数据范围猜算法

各种数据量下 ,可选用的算法的时间复杂度如下表:

数据量\时间复杂度 \(O(log_{2}{N})\) \(O(\sqrt{N})\) \(O(N)\) \(O(Nlog_{2}{N})\) \(O(N^2)\) \(O(N^3)\) \(O(2^N)\) \(O(N!)\)
\(n \le 10\) 可用 可用 可用 可用 可用 可用 可用 可用
\(n \le 30\) 可用 可用 可用 可用 可用 可用 可用 不可用
\(n \le 100\) 可用 可用 可用 可用 可用 可用 不可用 不可用
\(n \le 10^3\) 可用 可用 可用 可用 可用 不可用 不可用 不可用
\(n \le 10 ^ 5\) 可用 可用 可用 可用 不可用 不可用 不可用 不可用
\(n \le 10 ^ 7\) 可用 可用 可用 不可用 不可用 不可用 不可用 不可用
\(n \le 10 ^ 9\) 可用 可用 不可用 不可用 不可用 不可用 不可用 不可用
\(n \le 10 ^ {18}\) 可用 不可用 不可用 不可用 不可用 不可用 不可用 不可用

各种常见算法的时间复杂度

时间复杂度 算法
\(O(N!)\) 递归、 DFS、 DFS+剪枝
\(O(2^N)\) 递归、 DFS、 DFS+剪枝
\(O(N^3)\) 动态规划、记忆化搜索、floyd(多源最短路)
\(O(N^2)\) 动态规划、记忆化搜索、dijkstra(单源最短路)、prim(最⼩⽣成树)
\(O(Nlog_{2}{N})\) 快排、归并、heap(堆)、set(红⿊树)、⼆分、拓扑排序、堆优化的dijkstra、堆优化的prim、线段树
\(O(N)\) 双指针、滑动窗口 、单调栈和单调队列、搜索(BFS+DFS)、并查集
\(O(\sqrt{N})\) 判断质数
\(O(log_{2}{N})\) 辗转相除法(最大公约数) ,快速幂