一、缩短代码、减少编程时间
文章目录 四、一些编译优化五、养成代码习惯
算法竞赛:一些c++的奇技淫巧
本文旨在不涉及算法的情况下,尽量帮助选手表现的更好
如对本文有任何疑问,可以私信
一、缩短代码、减少编程时间
对于相似的代码,可以思考如何用函数,#宏定义 等方式 减少代码长度。
既可以增加可读性,减少错误。
同时也能缩短编程时间、方便检查
很多人认为 # 会增加出现错误的可能。
因为预处理阶段会暴力替换被 # 的内容,容易出现 优先级 等问题。
这个 “暴力” 对宏定义简直再合适不过了。我最开始看到也觉得作者很幽默。
直到——偶然看见关于宏定义的一篇文章。
比如下面这段代码:
#include int main() {
#define m 5+5printf("%d", m * 10);
}
输出的就是 55 而不是期望的 100
而改一下,加上括号:
所以 # 通常会加括号避免优先级的问题。
此外,宏定义还可用于类似函数的作用,这里就不赘述了。
这是一方面,另一方面宏定义确实可以简化代码。
二、尽量使用模块化编程
例如把问题拆解成几个部分,分成函数分段解决
方便调试、查错
三、殿试 认证 时
弄死隋炀帝 感谢隋炀帝完善科举制度,让今天的我得以一天一小考,一周一大考。遗臭万年 流芳百世
殿试时,看到 皇帝 考官不要紧张,努力成为社交恐怖分子。
啊呸,说正经的。
心态
心态肯定是最重要的,保持良好心态,坦然面对。
考前准备
头天晚上(好是一周以内,一直更好)不要吃奇奇怪怪的东西,比如穿山甲。
易燃易爆枪支管制刀具等危害公共安全的东西更是随便带,看谁敢拦你
第二天便秘窜稀不要怪我没提醒,一堆警察冲进来更是相当搞同场选手的心态
四、一些编译优化
最常见的有# GCC (3)(打开O3优化)等。
而且对c/c++语言一般都会开O2
——如果非要不可
#pragma GCC optimize(3)
#pragma GCC target("avx","f16c","sse3","sse2","sse1")
#pragma GCC target("avx","sse4","sse4.1","sse4.2","ssse3")
#pragma GCC optimize("Ofast","-fgcse","-fgcse-lm","-fipa-sra")
#pragma GCC optimize("-ffast-math","-fpeephole2","-fsched-spec")
#pragma GCC optimize("unroll-loops","-falign-jumps","-falign-loops")
#pragma GCC optimize("-falign-labels")
#pragma GCC optimize("-fcaller-saves")
#pragma GCC optimize("-fcrossjumping")
#pragma GCC optimize("-fdevirtualize")
#pragma GCC optimize("-fthread-jumps")
#pragma GCC optimize("-funroll-loops")
#pragma GCC optimize("-freorder-blocks")
#pragma GCC optimize("-fschedule-insns")
#pragma GCC optimize("inline-functions")
#pragma GCC optimize("-falign-functions")
#pragma GCC optimize("-fschedule-insns2")
#pragma GCC optimize("-fstrict-aliasing")
#pragma GCC optimize("-ftree-tail-merge")
#pragma GCC optimize("-fcse-follow-jumps")
#pragma GCC optimize("-fpartial-inlining")
#pragma GCC optimize("-fsched-interblock")
#pragma GCC optimize("no-stack-protector")
#pragma GCC optimize("-findirect-inlining")
#pragma GCC optimize("-freorder-functions")
#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("-foptimize-sibling-calls")
#pragma GCC optimize("-ftree-switch-conversion")
#pragma GCC optimize("-fexpensive-optimizations")
#pragma GCC optimize("-fdelete-null-pointer-checks")
#pragma GCC optimize("inline-functions-called-once")
#pragma GCC optimize("unroll-loops","no-stack-protector")
绝对炸裂。放进你的代码里,生成 传 说 中 的 火车头 ,看了的都说好 亲身经历
五、养成代码习惯
养成固定码风。
比如,我喜欢在 意义/功能 不同的代码段中间空行。
突出代码逻辑,方便检查、阅读。