NOIp 的千层套路

持续更新

  • 前缀和与差分
  • 树链剖分
  • 放到链上考虑
  • 线段树合并与线段树分治
  • 树的边权与点权间的相互转换
  • 考虑点的深度
  • 树形 dp,树形依赖背包
  • 子树求和转化为 dfs 序 区间求和
  • 启发式合并可以快速求多条路径是否经过多个点
  • 异或考虑 01 Trie
  • 森林中树的数量 = = 点数 - 边数。

图论

  • DAG,拓扑排序 + dp
  • 有向图,Tarjan 缩点 \to DAG
  • 关于度数的问题考虑欧拉回路
  • 基环树先考虑树的问题
  • 选择边可以转化成一个个加边
  • 并查集可以维护连通性
  • 联通块可以逐一处理,也可以先考虑联通块间的贡献
  • 多次询问一个区间,可以考虑线段树
  • 用中转点优化建图
  • 路径上的最短路,考虑建立最短路树
  • 关于边权的最大值最小,考虑建立瓶颈树
  • 关于对边权最大值的限制,考虑建立 Kruskal 重构树

字符串

  • Trie
  • hash
  • SAM
  • AC 自动机
  • kmp
  • Manacher
  • 嵌套可以区间 dp

dp 优化

  • 滚动数组
  • 序列自动机
  • 预处理
  • 考虑冗余的枚举
  • 找到状态中两个数的关系,把它们写成一维,或将其中的一维缩小
  • 单调队列优化
  • 矩阵加速
  • 线段树维护
  • 考虑将状态和结果互换

偏序

  • 拓扑排序(建图)
  • cdq 分治(排序,线段树或树状数组维护)

方案数

  • 容斥原理
  • 组合数
  • 计数 dp

颜色

  • 四色原理
  • 奇偶染色,二分图染色
  • 枚举颜色,只保留或删除该颜色

其它

  • 二进制分组
  • 先枚举或二分一维
  • 双指针尺取
  • gcd 和 lcm 可以考虑质因子的指数
  • 数据有无序性?排个序试一试
  • 切比雪夫巨鹿与曼哈顿距离相互转换

猜你喜欢

转载自blog.csdn.net/qq_39984146/article/details/107725235