我的错题本

zhangtingxi的启发,写了这个错题本,来记录自己的易错点。

一:比赛相关

  1. 检查文件名,文件流。(2021CSP-S)
  2. 尽量使用万能头。(2020CSP-S)
  3. 最后一定要把所有样例过一遍,包括小样例(2022CSP-S)
  4. 暴力一定要复制一份,之后可能需要。
  5. 不要花太多时间在一道题上!

二:数组空间

  1. 线段树开4倍空间
  2. 注意如果是动态开点线段树是开 logn 倍空间,可持久化数据结构log倍原来空间
  3. 双向边开两倍,注意图论题目 n,m 上限是否一样。
  4. 网络流千万要开够,不要数错。如果够直接开20倍。(ABC263)
  5. 离散化,破环成链要开够
  6. SAM,O(1)lca要开两倍空间

三:卡时间常数

  1. 主席树最好只跑一次(NOI Online2022)
  2. 如果可以通过离散化优化勉强卡到上界的复杂度那就离散化。(USACO2007NOV)
  3. hash表手写,尽量使用挂链法。(20221027模拟赛)
  4. 数组的枚举顺序要和开的顺序尽量一样。如
for(int i=1;i<=n;i++)
	for(int j=1;j<=n;j++)
		a[j][i]++;

这样常数会巨大!(20221015模拟赛)
5. 线段树如果常数比较大要尝试用离散化避免动态开点和区间操作,如果还不够上树状数组硬弄或者用别的方法代替。(20221018模拟赛)
6. ST表访问内存不连续,O(1) 的常数也不小,可能跑 107 如果是long long 会被卡。
7. 广搜可以代替深搜,会快很多

四:卡空间常数

  1. 注意vector有两倍常数
  2. 如果用 map 或者 set 卡到了接近空间上界,要注意这两个东西空间常数巨大,尝试优化(20221010模拟赛)
  3. dp时滚动数组
  4. 前缀和时不能用辅助数组就在原数组上弄(20220819模拟赛)
  5. bool数组用bitset!
  6. 快速的排序中只有堆排不用额外空间
  7. 基排有时候也能缩空间
  8. 分块常数大尝试莫队
  9. 深搜一般比广搜少几个数组,但广搜可以滚动数组优化。
  10. 可以尝试用分块预处理的方式来弄。

五:时间复杂度

  1. 首先不要相信 O(),要知道出题人不会放过你(20221105模拟赛)
  2. 但如果有 O() 算法,要花时间证复杂度或者找到更好的方法,实在不行的话可以跟暴力一起提交上去。有时会有惊喜。
  3. gcd的 时间复杂度是有时不行

六:贪心正确性

  1. 尽量拍
  2. 能证的花店时间证,证不出来的暴力打上(20221115模拟赛)
  3. 如果有别的做法的就用别的做法。
  4. 如果贪心是错的,尝试反悔
  5. 如果没有更好的方法,有一些高概率正确的贪心,还是打上去吧。还可以尝试多次贪心取最优等方法来骗分(20221116模拟赛)
  6. 贪心时如果出现贪心估出来的权值相等,一定要去注意数量相等时贪心的结论是否成立。

七:二分

  1. 二分前尽量判断边界情况(20220312模拟赛)
  2. 注意 (l+r)/2 时l+r是否爆int/long long(20221018模拟赛)

八:随机化

  1. Xoring hashing 一定要把随机范围放到 long long 中(牛客2022第4场)
  2. 什么时候都不要忘了随机化。(牛客2022第5场)
  3. 使用 mt19937,rand()的值域在不同系统中不一样,很烦。(20221022模拟赛)
  4. 随机化可以拍一下看正确率,如果拍都错了还是放暴力吧。
  5. 对于题目限制住了随机的,很有可能特意去卡(例如把你的模数固定了)
  6. 随机化的时间限制不要设太满,不要高估CCF评测机(NOI Online2022)

九:动态规划

  1. 对于dp状态数特别多的,考虑去除用不到的状态(20221027模拟赛)或者把一些答案一定相同的缩起来(20221019模拟赛)把一些状态改成枚举的内容
  2. 对于转移,那些套路弄上去
  3. 如果设计的状态不好压,尝试在别的地方(例如值域,另一个dp数组)进行dp
  4. 一些暴力的dp起码把方程,定义写出来,有时候会有惊喜。

十:数据结构

  1. 有关连续区间的都可以尝试往线段树上去套,因为有可能会出来线段树。
  2. 线段树平衡树的tag一定要求合并(ABC265G)
  3. 调试还是要自己把树建出来一个个值看。
  4. 调试的时候,可以先将数据结构用暴力代替,检查其他部分正确性后再写数据结构。

十一:图论

  1. 树上多次询问考虑树剖,倍增,点分治、点分树,离线+启发式合并
  2. 图上多次询问考虑图剖,离线+(各种东西),最小生成树上处理
  3. 千万别被前两条限制住
  4. 最优化问题千万试一下网络流,因为网络流太玄学了
  5. 距离问题点分治/点分树

十二:数学

  1. 矩阵树定理记得去除一行一列
  2. 见到卷积要想到生成函数

十三:读题

  1. 小样例记得手模
  2. 英文题面关注样例解释
  3. 有些恶心出题人在一个地方说好了数据随机,结果有一档部分分是满足某个要求(如本来说了 a 数组随机,结果部分分里有一档 ai3)
  4. 无论题目多简单,都要看一眼样例解释,保证没读错题。
  5. 不要怕长的题面
posted @   灰鲭鲨  阅读(212)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
点击右上角即可分享
微信分享提示