程序运行
- \(\rm{Windows}\) 的栈空间大小是 \(8~\mathrm{MB}\),可以使用指令
-Wl,--stack=268435456
将运行栈提升到 \(256~\mathrm{MB}\)。 - \(\rm{MacOS}\) 的栈空间一样是 \(8\mathrm{MB}\) ,且暂时找不到方法扩大。
- \(\verb|vector<T>|\) 的占用空间大小 \(2^n \times \mathrm{sizeof}(\verb|T|)\),\(\verb|clear|\) 之后不会清空占用空间。
- \(\verb|stack<T>, queue<T>, set<T>, map<T>|\) 的实际占用空间至少为 \(100 \times \mathrm{sizeof}(\verb|T|)\) 左右,也就是说即使 \(\verb|empty() == true|\),也是有空间占用的。这个问题涉及到 \(\rm{STL}\) 的底层实现,具体原因比较复杂。
- 函数前 \(4\) 个参数是用寄存器传参的,之后的所有的都是用栈传参,栈效率远低于寄存器。
- 在 \(\verb|64bit|\) 机器上,参数都是 \(64\) 位的,也就是说,传进去一个 \(\verb|int|\) ,实际上会放大成 \(\verb|long long|\) ,因此
printf("%lld", int)
可以输出正确答案(雾)。但是这在 \(\verb|32bit|\) 上会错。 #pragma GCC optimize(2)
手动开 \(\rm{O2}\) 。- 火车头:
#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")