做题思路总结
分析思路:
-
清晰的理解题意并能对样例做出合理的解释。
-
拿到题目后,从考察知识点入手。
-
当题目无从下手时,先找性质猜结论,并理解题目中 "最优策略" 的他们是如何做的。
-
优先考虑朴素算法,其次进行优化。
-
在无法想出思路的情况下,可以考虑从特殊性质或简化后的一个题目的子问题的做法入手并推广至题目。
-
考虑转化问题或使用辅助方法简化问题。
-
猜测结论并使用打表验证,同时观察是否符合直觉。
-
观察答案形态,进行转化。
-
观察题目中合法的充要条件(这点在计数题中非常有帮助)
题目类型具体做法:
DP:
- 设计 DP 三要素:状态定义,状态转移,状态初始化。
设计状态:
-
直接入手
-
分析性质后考虑转化,间接使用状态推出答案。
-
\(\rm Trick\): 答案比较小的时候,可以考虑换量。
-
\(\rm Trick\): 分析答案结构,提前计算贡献。
优化:
-
优化状态个数:离散化
-
优化状态转移时间复杂度,可以考虑使用 DS,决策单调性及 \(\rm WQS\) 二分。
DS:
-
转化!!!
-
遇到柿子考虑参变分离,拆 \(\max,\min\),分类讨论。
-
离线询问
Trick:
-
当答案较小时,可以考虑换量。
-
用一个元素来代表一个集合
Maths:
- 优先颓柿子
网络流相关:
-
如果可以找到二分元素,则优先考虑二分图相关问题。
-
考虑建模中的套路,通过一些常用的比如最小割转化后解决问题。
-
考虑特殊边权对答案的限制作用,如 \(\rm INF\) 固定。
博弈:
-
猜结论贪心
-
打表观察 \(\rm SG\) 函数的规律
常见结论:
\(n\) 条边 \(n\) 个点 -> 基环树森林