积累OI学习中的经验教训。
考场经验
- 内存不要开炸
- 合理分配时间
调试
编译指令: g++ -O2 -Wall -Wextra -std=c++14
调试指令:
g: 生成调试符号,配合报错显示精确到行的源码位置 (不加则只显示内存地址).O0: 显式禁用所有代码优化, 确保断点和报错行号绝对精准.Wshadow: 检测变量名遮蔽冲突.Wconversion: 检测隐式类型转换导致的精度丢失.D_GLIBCXX_DEBUG: 开启 STL 容器调试模式, 捕获 STL 越界和迭代器失效.fsanitize=address,undefined: 检测内存泄漏/溢出/释放后使用 + 有符号溢出/空指针(开销极大).fstack-protector-strong: 轻量级栈溢出保护.
查看帮助:
g++ --help : 查看所有编译选项.g++ --help=common : 查看最常用的编译选项.
图论算法
lca
倍增法求lca时要注意为根节点的dep赋值为
数据结构
树链剖分
在边权转化为点权的题目中, 应当注意在最后一次操作时不能对lca操作, 其对应的边并不在操作的路径上.