比赛时重点检查的五个问题:数组大小、变量类型、减法和负数、栈溢出、时间复杂度
- 有关类似数位dp的问题:要判断一个数是否在给定范围内(实际上就是判断比x小的数有多少个),我们可以采用一个通用的套路:枚举当前数的前i位与x相同,第i位比x小,那么后面的位就可以随意排列了。这一个套路应用很广,十分有效。
- 有关最小生成树:如果题目中出现了类似“最小代价使整个图联通”的信号,那么大概率是使用最小生成树。就算有一点不同那么也大致是往这个方向想。
- 有关多维数据结构:出现要满足几个大小关系才能更新的全权值的情况时,我们可以考虑运用cdq分治、扫描线等情况
- 当出现要维护多棵线段树,并且一棵线段树要由其他几棵线段树合并而成时,可以考虑线段树合并。
- 平衡规划:如果两个操作(一般是查询和修改)的时间复杂度相差太大,那么我们可以考虑均衡一下两边的时间复杂度。这样就可以减小总的时间复杂度。
- 自然对数:在只涉及乘除(或开方)运算,并且只需要知道数字间的大小关系,并且数字很大(大得连long long都存不下时),可以考虑自然对数。自然对数的具体操作见6.29的A组。