解题技巧总结

通用方案

  1. 观察题目的重要信息,不重不漏,包括题意、数据范围与hint。
  2. 手推样例,保证真正理解题目。
  3. 格式化地书写问题,为下一步推导铺垫。
  4. 尝试由小及大,忽略某些限制,一步步加强。切忌好高骛远,一步到位。
  5. 尽量合并具有相同特征的信息,减小复杂度。
  6. 发掘数据范围和题目性质的短板,例如从值域与颜色段均摊来入手。

分类

1.计数

  1. 满足条件的计数,先尝试给出快速判断是否满足条件的方案。
  2. 观察性质,找到一一映射的特征元,这将大大简化问题,不要一直着眼于整个所求集合。
  3. 若2难以实现,尝试拆解贡献到单点,单点常常是易于计算的。
  4. 若23均难以实现,考虑更松的性质(钦定/至少),尝试容斥。有时候容斥系数和可以DP。
  5. 清晰地写出计算式,明确式子将对下一步的多项式推导有很大帮助。

2. 多项式/生成函数

  1. 这类题目一般不会直接一步到位,需要更多地考虑设立限制不那么强的跳板函数,建立其余答案函数的关系。例如任意无向图与无向连通图。
  2. 足够清晰地写出计算式,不断尝试化简,最后再考虑使用科技。

3.最优化问题

  1. 很大一部分可以二分答案转化为判断合法性。这要好做得多。
  2. 发掘隐藏性质,可能会具有某种贪心策略的单调性。
  3. 组合优化问题直接考虑网络流与进一步的模拟贪心/DP,这玩意原问题八成是NP。
  4. 完全不会直接上退火。

4.DP

  1. 抓住特征进行设立状态,清晰地写出DP式。不一定要一步到位,可以先写一个十分暴力的式子再优化。
  2. 值域较小时考虑将式子的一部分加入状态。
  3. 寻找转移特征,合理采取优化方式(决策单调性/斜率优化/wqs),这可以打表找。

5.数据结构

  1. 观察题目值域单调增减与颜色均摊等性质。这十分重要。
  2. 判断信息特征,可区间合并->线段树,可减->差分,都不能就大力一维分治。
  3. 遇事不决先离线(如果能)。不带修就先扫描线,带修就莫队。这会好做很多。如果强制在线,其实会大大压缩我们的算法选择范围。
  4. 树上问题先尝试拍平成dfn,如果不能再考虑树链剖分。
  5. 有些时候可以采取扫描线扫序列维,维护时间维信息来做。
  6. 求最长满足条件序列可以尝试二分一个长度再维护存在性。求区间内子串权值和一般使用每次Ai+=Bi的线段树。
  7. 实在不会就大力分块。bitset 是暴力救星。

6.字符串

  1. 先看看求啥。匹配->ACAM/SAM,回文->PAM,子串->SAM。只要不是回文先考虑SAM,这玩意比其他好用得多。SA震怒
  2. 如果有可持久化要求,考虑主席树维护出边或使用border理论(SAM不行)大力log跳链。
  3. 数据结构是自动机双手的延伸。统计贡献考虑上fail树、后缀树子树和瞎搞。
  4. ACAM,PAM的fail具有log段等差数列性质,这总是能够抵消掉一些操作/统计一段重复贡献,使得只需要对修改/查询的端点进行操作。
  5. 时刻铭记暴力哈希。这在树上点对路径字符串有较大作用。
  6. 看到lyndon直接run(不会这个)。

7.计算几何

不晓得这玩意能有啥技巧。

8.思维题(构造/博弈/etc.)

  1. 寻找性质,手玩样例。然后偏分跑路,听天由命。
posted @   tylon  阅读(115)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· Apache Tomcat RCE漏洞复现(CVE-2025-24813)
点击右上角即可分享
微信分享提示