Maybe something will change|

Semorius

园龄:1年9个月粉丝:4关注:10

写题时的破防瞬间

经典永流传


记一些做题时卡了很久的奇奇怪怪的点:

调题篇

  1. 认真审题

  2. 取模!!!取模!!!取模!!!

  3. 数组还是比较快的,有事没事别用 mappriority_queue(存图还是用链式前向星吧,少用 vector

  4. 十年OI一场空,不开long long***

  5. 注意数据范围,双向边开两倍,线段树开四倍,线段树合并开 log

  6. 能用 int 别开 long long,要不然可能 TLE

  7. 变量重名引发的惨案(全局开过了函数里再开一遍引发奇妙错误)(NOIP2021/fn

  8. 循环手残打错后 ij 傻傻不分(其实还有 nm

  9. 多组数据记得清零,不止数组,还有必要的 stlcnttot……

  10. 图论的边、数据结构的数组编号从0还是1开始

  11. 强制在线更新 lastans

  12. 数据结构询问区间不保证 lr

  13. 赋值运算符与等于号不分( === 傻傻不分)

  14. 运算优先级(养成好习惯,多加括号)

  15. 局部变量未赋初值

  16. 如果反复 memset 太慢了,那么尝试在循环里顺便清零,或者再做一遍逆操作复原

  17. 每天一个好习惯: sort 自定义比较函数 cmp 用引用传参 (e.g. int &a)真的会快很多啊啊啊

  18. 结构体里数组不要开太大,上次高精玄学错了好久

  19. 变量都开 long long ,快读快输忘开

  20. 极大/小值直接赋 (1<<30)(1ll<<60) 有风险,建议 memset

  21. struct 里套 vector 容易被卡常?

  22. 输出格式(是否漏打换行)

  23. 变量突变了,一般是越界,并且怎么有可能乱飘到别的数组里啊啊啊啊啊啊啊(队长忠告,多用 stl,自动分配空间)

  24. dp 中赋了极大/极小值,加减乘除的时候小心炸,或是例如极小值加了一个数导致发生变化。

  25. 当你觉得你写的所有部分都一点问题没有的时候,可能确实如此,因为可能还有你没考虑的情况。

  26. 算时间限制的时候别忘了空间限制。

算法篇

  1. 求欧拉路径 / 回路的字典序最小方案,dfs 时在回溯时倒序存经过的点,输出时正序输出,避免自环最后走不到

  2. 二分上下界

  3. 结论题是否存在特例

  4. 利用倍增 LCA 求树上任两点距离,区分节点深度与到根的路径长

  5. 链式前向星的成对变换 tot 先赋成 1

  6. 字典树中初始时 tot=1

  7. 结论题打表找规律显然比人类智慧要轻松

  8. 取对数可以把大数乘法转化为加法

  9. 保证精度慎用除法

  10. 深搜递归边界

  11. Hash 有时自然溢出是个不错的选择(一般用180181327不会被卡,别问我是怎么来的)

  12. 重复要用的东西预处理

  13. 搜索内部用以记录每一层状态的数组 / 变量千万别开全局,否则覆盖掉就g了

  14. 数据结构下传懒标记想清楚优先级与下传方式

  15. 线段树大常数可以用树状数组代替

  16. 线段树合并的两种写法

  17. 虚树建边的时候注意方向,或者直接暴力建无向边,还有什么 Kruskal 重构树、圆方树,如果建完以后发现 dfs 进不去,有可能只建了单向边

  18. DP 初始状态的设定(记搜写法是递归边界)

  19. 数位 DP 中判断一个状态是否访问过不可简单判dp数组是否为 0 ,否则当前状态答案为 0 时时间复杂度gg,最好加一个 vis 数组

  20. 关于斜率优化:①若直接用 double 判斜率,注意除以 0 时返回极大值;若用乘积形式判斜率,注意乘负数会变号,爆 long long 时要开 int128。②在凸壳中加新的点时,与 q[r]q[r-1] 比较都可以。③判断斜率大小最好加等号。

  21. 差分约束建超级源点 0 与所有点连长为 0 的边,所以点数变为 n+1 ,判负环的松弛次数至少为 n+1

  22. 点双注意是否有孤立点连自环

  23. 线段树的懒标记有时不能简单地判是否为 0,有时需要对 tag 取模时,tag 变为 0 就下传不了了

本文作者:Semorius

本文链接:https://www.cnblogs.com/Semorius/p/17538275.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   Semorius  阅读(32)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起