坑点总结

写点坑点总结。

· 如果是取最大/最小值,初值一定要搞清楚,最好直接赋为 \(\pm \infty\),其中 \(\infty\) 也要根据数据规模来定,也不能太大,否则本来可以开 int 非要搞成 long long,造成额外的空间开销。

· 检查题目先看空间。不能过大也不能过小。过小可以用极限数据来检测,过大可以通过计算来检测。注意计算空间复杂度的时候不能忽略常数因子,开几倍就要乘几倍,栈空间也要包括在内。每次改了空间后都最好重新计算,也可在交卷前20分钟检查。

· 线段树查询不定区间的时候,一定要保证该区间在下标范围内,不然会有奇怪错误。树状数组不能修改位置 0,不能查询大于位置 n 的值。注意特判。

· 线段树 tag pushdown 更新顺序:赋值>乘法>加法。(根据标记的影响关系而定,对其他有影响的标记要先 pushdown)

· 如果答案涉及 long long,一定要检查是否所有中间变量都开了 long long,是否所有中间表达式都不会溢出。

· Dp 的初始值要想清楚,要穷尽所有初始值,例如树dp的一种状态有当前根节点选或不选,都要考虑。枚举下标转移的时候要保证枚举的状态是合法的,且能够转移到当前状态。

· 存图图方便就用 vector,但是数据规模大了还是用邻接表,vector 很慢,会造成不必要的常数因子。

· 最后一点时间检查调试信息删干净没有。

· 多测一定检查是否所有东西都清空了,几个 for 的事。不要因为评估错误,必须清空的以为不必清空,而造成不必要的丢分。

posted @ 2021-10-18 09:57  Kreap  阅读(45)  评论(0编辑  收藏  举报