- int 类型函数末尾一定记得 return 0。
- 统计区间一个值个数的时候,可以尝试转化为记录最小值和最小值出现次数。
- 留时间检查 freopen 与注释。
- DP如果空间开不下尝试滚动数组,如果不能可以尝试换一种状态dp,将原先的状态换成dp内容。
- 一般 dp 数组记录的东西需要有最优性,就是说可以贪心的取更大。
- 排名类的问题可以转化为求和,通过 > 的数赋值为 1,< 的数赋值为 0(有时可以为 -1)
- dp 时可以用线段树维护 —— 不止维护之前的 dp 数组,也可以直接将一次转移转化为在上一个 dp 数组上直接操作。
- 值的种类个数不超过和的根号。
- 树上背包用是 n 乘值域的。
- 值的种类或极值趋于减少,可以考虑势能线段树。
- RGB三种颜色合并相互转化时,考虑替换成 123 与异或操作。
- 一般只区询的题有几种做法:直接维护(在线),扫描线(右端点右移维护左端点,离线),莫队(离线),分治(离线)。
- 求子区间权值和一般可以用增量法,右移右端点,维护新增区间的权值。
- 让你操作长度为 k 的区间,可以转化为对每个 mod k 同余的序列进行单点修改。
- 二进制题可以按位计算贡献
- 最小化最大值二分
- 虚树的点数为 O(叶子个数),在树分层算贡献时有用。
- 全局除以 2 操作会导致值的种类个数减少。log 次操作后会至多两种。
- 区间询问时,可以考虑预处理出每个点有贡献时最大的左端点。就可以转化成区间 < k 的贡献和。
- 哈曼顿距离考虑转化为切比雪夫距离。
- DP时考虑问题的组合意义。特别是连乘贡献时
- OI里面非常重要的几个思想:预处理,单调性,递归,记忆化。