错题+trick 集

错题 \(+trick\)

想写这个很久了,一直都没下决心,但最近挂分太严重了,决心写一下。

错题

统计自 \(2025.11.1\ CSP-S\ 2025\) 开始,直至本人退役。

  1. 喜欢写 int 类型快读快写的小朋友。
  2. 喜欢不管时空写 #define int long long 的小朋友。
  3. 喜欢不想清楚怎么特判的小朋友。
  4. 喜欢敲错字母的小朋友。
  5. 喜欢多次询问清空不彻底,甚至不清空的小朋友。
  6. 喜欢不计算空间复杂度的小朋友。
  7. 喜欢检查找环时不注意头尾是否连接的小朋友。
  8. 喜欢读错题的小朋友。
  9. 喜欢不认真阅读数据范围(信息学没有互文)。

trick

统计自 \(2025.11.1\ CSP-S\ 2025\) 开始,直至本人退役。

  1. 将特殊段用特殊字符标出。
  2. \(Rounding\ Box\),将平面图上所有点先用矩形括起来,再找性质。
  3. \(a=k\) 的正方形括点,\((x,y)\to(2nx+i,2ny+i),k\to 2nk+n\)
  4. 对于一个三元操作 \((u,v,w)\) ,连接这种边,然后直接大力网络流/二分图/生成树/生成基环树/dp……。
  5. 假如要优化枚举子集的状压 \(dp\) 时间复杂度,可以考虑单次加一个元素,但是统计最后一个成型集合的一些信息用以去重。
  6. 可以将组合数转化为多项式。
  7. 区间染色问题可以考虑倒着做。
  8. 对于后缀数组,当 \(rk_i>rk_j\) 时,\(s_i\ge s_j\),取等条件为 \(rk_{i+1}>rk_{j+1}\)\(s\) 为原字符串)。
  9. 环上贪心可以转两圈解决。
  10. 某些情况下,可以把方阵看成邻接矩阵。
  11. 若要求一张图不能有环和长为 \(k\) 的链,可以考虑分成 \(k\) 层,层内不连层间连。
  12. 和同近积大。
  13. 可以通过建立原图(最大/最小)生成树的方式,将某些边的合法性判定以及答案贡献转化成生成树上一条链。
  14. ——父亲,为什么我不会这道题?
    ——孩子,怎么了?
    ——父亲,这道题根本不像人能做的 \(ds\)
    ——孩子,你知道莫队是什么吗?
    致考场上想不到莫队的 \(white\_tiger\)(不想删除可以回滚)。
  15. 假如出现需要我们选择的情况,且假如不需要选择,可以用状态较少的 \(dp\) 解决,考虑 \(dp\)\(dp\)
  16. 可以考虑做局部状态压缩,保留近几位的信息。
  17. ——父亲,这个数论好难!
    ——孩子,这题要设状态。
    致考场上做数学题不喜欢想能不能设状态的 \(white\_tiger\)
  18. 正难则反是个好东西(更多用于简化问题),容斥是个好东西(更多用于推导公式)。
  19. \(xy\to\log x+\log y,\frac xy\to\log x-log y\)
  20. 超级源汇点是个好东西。
  21. 看到不等式想差分约束。
  22. 最短路不仅有眼前的 \(dij\),还有脑后的 \(bfs\)
  23. 离线有图,线段树分治。
  24. 对于 \(\sum_{i=0}^n\sum_{j=0}^n\binom{i+j}{j}\times f(i,j)\) 一类,可以将 \(i+j\le n\)\(i+j>n\) 的情况分类。
  25. \(\sum i\times c(=i)=\sum c(\ge i)\)
  26. 交互图论题可以考虑先建出生成树。用处有:找到可能左右部点(二分图)……
  27. 遇到对于所有 \((x-i,x+i)\) 类点对连边问题,可以考虑反向 ST 表 + 并查集(又名倍增并查集)。
  28. 不可动态加的算法考虑二进制分组。
  29. 不可动态减的算法考虑维护一个减集合,当加维护。
  30. 遇到神秘染色/匹配问题,感觉要吐出来的时候,想网络流;假如时间要求很高,但是建模很简单的时候,考虑模拟网络流。
  31. 假如要对多项式做复杂操作,考虑将对多项式的操作变成对普通数字的操作,然后拉格朗日插值即可。
  32. 假如遇到贡献互不相关,且路径不能相交的 DAG 问题,考虑 LGV 引理;假如贡献相关,就用数学手段变成不相关的。
  33. 求一堆点到中位数的总步数 = \(\sum_x\min(\sum[a_i\le x],\sum[a_i>x])\),然后这个问题又可以转化成设 \(b_i=[a_i>x]-[a_i\le x]\),求子区间和。
  34. 对于一个单调递减且 \(a_i=O(\frac ni)\) 的数列 \(a\),假如我们可以 \(O(C)\) 的求出单个 \(a_i\),我们就可以 \(O(C\sqrt n+n)\) 的算出整个序列。方法是大力分治,左右相等时停止。
  35. 网络流题,可以先跑/构造出一张残量网络,然后再利用某些性质,对于残量网络再跑一次网络流。
  36. 遇到 \(n\) 较小的连通性问题考虑维护联通情况作为状压的信息,状态数为 \(\operatorname{Bell}(n)\)
  37. 容斥是个好东西,但是不要往死里想,万一 \(joker\) 了那就真完蛋了。所有算法也都是这个道理。
  38. 假如对序列的限制有和为给定值,可以将问题转化为插板。
  39. 遇到产生共享条件为 \(a_i-a_j=c\)\(\bmod c=0\) 一类的东西时,将每一项按 \(\bmod c\) 的结果分开考虑。
  40. 以冒泡排序为背景的题目,考虑将问题转化成等价的逆序对问题进行思考。
  41. 假如一道题目的几个限制有明显的强弱关系,可以考虑改变 \(dp\) 枚举顺序。
  42. 对于一个序列,我们可以抽出 \(pos_i\) 或者类似 \(pos_i\) 的东西(比如前缀逆序对数,或者前面有多少个某一类值),然后将问题转化成不需要管原序列的形式,看看能否变简单。
posted @ 2025-11-06 15:44  white_tiger  阅读(41)  评论(2)    收藏  举报