常见错误

Posted by Dispwnl on December 31, 2022
  • # define max(x,y) ((x)>(y)?(x):(y)) # define max(x,y) ((x)>(y)?(x):(y))尽量少用(尤其是数据结构),可能把函数放里面调用多次然后就被锤成弟弟了……
  • 写最短路($SPFA$或$Dijkstra$)注意每次用队列里的点更新下一个点而不是起点也就我错这种sb错误了
  • 还是define,注意如果# define mid (l+r>>1),二分答案时先记录答案再更新边界ans=mid,r=mid-1/l=mid+1
  • 空间不要卡着开,$+5+10$什么的
  • 手玩样例
  • 线段树等数据结构初始化、pushdownpushup不要漏了
  • 还是线段树,注意左右边界,查询或修改的时候注意哪里要变查询/修改边界
  • 取模,(ans+=qwq)%=mod这种写法还是少用的好,里面可能爆int啥的
  • 堆里面的比较函数要反着写
  • memset是个很鬼畜的东西,只能赋值连续的一段内存,所以多维数组就不要用了好像会没赋上值
  • 还是memset,如果一个函数自变量是数组memset的时候只会赋值第一个数?
  • 注意int是$(1«31)-1$,容易爆
  • 该取模的地方取模,常数大点应该没问题
  • 输入输出long long%lld
  • 树链剖分里面是d[top[x]]<d[top[y]],跟后面的比较d[x]<d[y]是反着的
  • $tarjan$点双边双分清楚!写到这里我还去查了一下……点双判断割点,边双判断割边
  • 用队列或栈要记得弹出
  • 数组定义到MAX就不要调用[MAX]
  • 做题时TLE就不要光想卡常了……可能不是正解
  • 考试时想不出正解打暴力往死里卡常的时候一定要保证答案正确
  • 思路不清晰/代码实现复杂的时候一定要想清楚每一步在码
  • 多组数据时各种数组初始化,宁愿慢一点也不要漏了听说rqy因为这个没Au
  • 初始化的补充,邻接表初始化h[]num
  • 单调队列注意队列里存的是编号还是元素,防止编号与元素直接比较
  • 树状数组单点修改不能直接赋值为$x$,要查询点值然后单点修改血的教训
  • 看清楚数据输入顺序再读入,看清楚是分开读还是合起来读血的教训
  • freopen检查里面$w$的大小写血的教训
  • 题目是多组数据的时候注意要把数据全读入了再特判差点血的教训
  • 一定要读懂题,学好语文非常重要
  • 广义$SAM$不要用基数排序处理线段树合并其实好像是可以的但是我不想写对的广义SAM了就这么认为吧
  • 指针移动的时候注意不要出边界
  • 写有返回值的函数一定要返回值(开$O2$会出错)
  • 求叉积的时候注意数据范围,小心乘爆
  • 文件操作检查是否写了.in.out
  • 样例的时候注意要用文件操作
  • 点分治找子树重心的初始值一定要设好
  • 注意题目要求的时间和空间限制
  • 考试时先把每个题的暴力打出来并保证好没有锅

$Cansult$