预编译
#pragma GCC optimize(2)
#pragma GCC optimize(3)
#pragma GCC optimize("Ofast")
#pragma GCC optimize("inline")
#pragma GCC optimize("-fgcse")
#pragma GCC optimize("-fgcse-lm")
#pragma GCC optimize("-fipa-sra")
#pragma GCC optimize("-ftree-pre")
#pragma GCC optimize("-ftree-vrp")
#pragma GCC optimize("-fpeephole2")
#pragma GCC optimize("-ffast-math")
#pragma GCC optimize("-fsched-spec")
#pragma GCC optimize("unroll-loops")
#pragma GCC optimize("-falign-jumps")
#pragma GCC optimize("-falign-loops")
#pragma GCC optimize("-falign-labels")
#pragma GCC optimize("-fdevirtualize")
#pragma GCC optimize("-fcaller-saves")
#pragma GCC optimize("-fcrossjumping")
#pragma GCC optimize("-fthread-jumps")
#pragma GCC optimize("-funroll-loops")
#pragma GCC optimize("-fwhole-program")
#pragma GCC optimize("-freorder-blocks")
#pragma GCC optimize("-fschedule-insns")
#pragma GCC optimize("inline-functions")
#pragma GCC optimize("-ftree-tail-merge")
#pragma GCC optimize("-fschedule-insns2")
#pragma GCC optimize("-fstrict-aliasing")
#pragma GCC optimize("-fstrict-overflow")
#pragma GCC optimize("-falign-functions")
#pragma GCC optimize("-fcse-skip-blocks")
#pragma GCC optimize("-fcse-follow-jumps")
#pragma GCC optimize("-fsched-interblock")
#pragma GCC optimize("-fpartial-inlining")
#pragma GCC optimize("no-stack-protector")
#pragma GCC optimize("-freorder-functions")
#pragma GCC optimize("-findirect-inlining")
#pragma GCC optimize("-fhoist-adjacent-loads")
#pragma GCC optimize("-frerun-cse-after-loop")
#pragma GCC optimize("inline-small-functions")
#pragma GCC optimize("-finline-small-functions")
#pragma GCC optimize("-ftree-switch-conversion")
#pragma GCC optimize("-foptimize-sibling-calls")
#pragma GCC optimize("-fexpensive-optimizations")
#pragma GCC optimize("-funsafe-loop-optimizations")
#pragma GCC optimize("inline-functions-called-once")
#pragma GCC optimize("-fdelete-null-pointer-checks") STL
当我们知道容器中存放元素的大致数量时,可以通过reserve()方法减少系统对容器进行资源再分配的次数;
当我们能够确定容器中存放元素的最大数量后,可以通过reserve()修剪超额资源,减少不必要开销
https://blog.csdn.net/zvall/article/details/46357779
stl.reverse(N)
减少局部变量
尤其不要在for里面声明
map
对于map,先用map.count()检索一遍,再处理数值。例如上图。
Hash
手写unordered_map
const int SZ = 1428571;
struct hash_map {
struct data {
int u;
int v, nex;
};
data e[SZ << 1];
int h[SZ], cnt;
inline int hash(int u) { return u % SZ; }
int& operator[](int u) {
int hu = hash(u);
for (int i = h[hu]; i; i = e[i].nex)
if (e[i].u == u) return e[i].v;
return e[++cnt] = (data){u, 0, h[hu]}, h[hu] = cnt, e[cnt].v;
}
int get(int u) {
int hu = hash(u);
for (int i = h[hu]; i; i = e[i].nex){
if (e[i].u == u) return e[i].v;
}
return 0;
}
hash_map() {
cnt = 0;
memset(h, 0, sizeof(h));
}
}cnt;
// https://ac.nowcoder.com/acm/contest/view-submission?submissionId=46873111 
京公网安备 11010502036488号