解题技巧总结
通用方案
- 观察题目的重要信息,不重不漏,包括题意、数据范围与hint。
- 手推样例,保证真正理解题目。
- 格式化地书写问题,为下一步推导铺垫。
- 尝试由小及大,忽略某些限制,一步步加强。切忌好高骛远,一步到位。
- 尽量合并具有相同特征的信息,减小复杂度。
- 发掘数据范围和题目性质的短板,例如从值域与颜色段均摊来入手。
分类
1.计数
- 满足条件的计数,先尝试给出快速判断是否满足条件的方案。
- 观察性质,找到一一映射的特征元,这将大大简化问题,不要一直着眼于整个所求集合。
- 若2难以实现,尝试拆解贡献到单点,单点常常是易于计算的。
- 若23均难以实现,考虑更松的性质(钦定/至少),尝试容斥。有时候容斥系数和可以DP。
- 清晰地写出计算式,明确式子将对下一步的多项式推导有很大帮助。
2. 多项式/生成函数
- 这类题目一般不会直接一步到位,需要更多地考虑设立限制不那么强的跳板函数,建立其余答案函数的关系。例如任意无向图与无向连通图。
- 足够清晰地写出计算式,不断尝试化简,最后再考虑使用科技。
3.最优化问题
- 很大一部分可以二分答案转化为判断合法性。这要好做得多。
- 发掘隐藏性质,可能会具有某种贪心策略的单调性。
- 组合优化问题直接考虑网络流与进一步的模拟贪心/DP,这玩意原问题八成是NP。
完全不会直接上退火。
4.DP
- 抓住特征进行设立状态,清晰地写出DP式。不一定要一步到位,可以先写一个十分暴力的式子再优化。
- 值域较小时考虑将式子的一部分加入状态。
- 寻找转移特征,合理采取优化方式(决策单调性/斜率优化/wqs),这可以打表找。
5.数据结构
- 观察题目值域单调增减与颜色均摊等性质。这十分重要。
- 判断信息特征,可区间合并->线段树,可减->差分,都不能就大力一维分治。
- 遇事不决先离线(如果能)。不带修就先扫描线,带修就莫队。这会好做很多。如果强制在线,其实会大大压缩我们的算法选择范围。
- 树上问题先尝试拍平成dfn,如果不能再考虑树链剖分。
- 有些时候可以采取扫描线扫序列维,维护时间维信息来做。
- 求最长满足条件序列可以尝试二分一个长度再维护存在性。求区间内子串权值和一般使用每次的线段树。
- 实在不会就大力分块。bitset 是暴力救星。
6.字符串
- 先看看求啥。匹配->ACAM/SAM,回文->PAM,子串->SAM。只要不是回文先考虑SAM,这玩意比其他好用得多。
SA震怒 - 如果有可持久化要求,考虑主席树维护出边或使用border理论(SAM不行)大力log跳链。
- 数据结构是自动机双手的延伸。统计贡献考虑上fail树、后缀树子树和瞎搞。
- ACAM,PAM的fail具有log段等差数列性质,这总是能够抵消掉一些操作/统计一段重复贡献,使得只需要对修改/查询的端点进行操作。
- 时刻铭记暴力哈希。这在树上点对路径字符串有较大作用。
看到lyndon直接run(不会这个)。
7.计算几何
不晓得这玩意能有啥技巧。
8.思维题(构造/博弈/etc.)
- 寻找性质,手玩样例。
然后偏分跑路,听天由命。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· Apache Tomcat RCE漏洞复现(CVE-2025-24813)