比赛手册
- 保持冷静,相信所有题都是可做的。
- 应当记录下来自己每一步的转化和处理,这要不了多长的时间。
- 如果在某个题一个步骤卡住的时间太长,并且没有什么比较大的进展,必须清理一下思路(比如换个题),然后再重新整理所有的推导。这个时长暂定为 \(30\) 分钟毫无进展。
- 思考的时候也应该遵循这里写的原则,不能无目的地思考。
- 如果没有思路,及时回忆思考的原则,或者写出目的,枚举可能的实现方法。
- 实现出现失误时,可以冷静想想本质上在做什么,能不能换一个实现思路。比如换个统计答案的方式,换一个枚举的变量。
- 当可以直接开始实现时,再停一停,想想本质上在维护一个什么过程,能不能找到某些性质使得实现更为简便,所有的步骤是否真的有必要这么做。
- 试着观察问题中本质不同的组合对象个数,它们很可能并没有那么多。
- 如果 DP 不出来,试着修改状态定义,或者放松 DP 过程中的限制,实际上可能枚举了不必要的限制。
- 如果实在想不出来,说明刻画可能错了,试着倒退几步,考虑是否有遗漏的性质 / 转化。
- 某个部分单独求不容易,可以试着放进整体里去计算。(例如:ABC220G 的左-右贡献单独算很难,直接放进求和里就可以推式子拆掉。)
- 续 4,这实际上就是说如果卡住了,试试我们要计算的东西完完整整的写出来。
- DP 的优化方法:
- 转置原理(计数)
- 压缩自动机 / 减少状态数(通用)
- 忽略不优的转移(最优化)
- 数据结构优化(通用)
- 决策单调性优化 / 凸性(最优化)
- 定义域-值域互换(单调的最优化DP)
- 贡献延迟计算 / 费用提前计算