最近调数据结构自闭了,准备总结一些不常见但很有用的操作。
- 将数据结构封存在结构体内。
这样可以让代码结构清晰一些,更好查错。
- 使用 devc++ 切换编译器。
只用打开‘工具’,‘编译选项’,输入 -std=c++11 就行了。
- 常用的代码可以用 define 宏定义。
同样是简化代码。如线段树可以这样:
#define lc(x) x<<1
#define rc(x) x<<1|1
-
极域杀手下载后需要给 .exe 文件重命名才能用。
-
树的最小支配集 $=$ 全集 $-$ 最大独立集。
-
如果函数类型不是 void ,必须有返回,否则会 RE。
-
WA 和 MLE 都有可能是数组开太小造成的。
-
随机函数不要用 $rand()$ ,要用这个:
mt19937_64 rng(time(NULL));
-
暴力代码可以分数据范围处理,有时可以“不可以总司令”
-
暴力算法可以利用 clock() 来卡时。
-
造数据 树 的数据时,要造菊花图,链,二叉树的情况。
-
有时 $sort$ 会被卡,可以用 stable_sort。
-
c++98 比 c++11快。
-
函数使用类似
f(const int a)
会更快。 -
莫队块长实际应为 $n/ \sqrt m$ 。
-
二位偏序时排序要判两个关键字
-
矩阵快速幂注意枚举顺序,按 i,k,j 来枚举
-
dinic 有时用 vector 更快,因为内存是连续的。
-
矩阵快速幂优化 dp 时,如果是多测,可以预处理出转移矩阵的 $2^i$ 次方。
-
$\gcd(0,n)=n$ 。