随便写一写 emm...
1.正向问题难以解决可以反过来倒着解决。 2.注意数组大小问题,没有空间限制的时候最好开到数据上限,有利于骗分,万一暴力有点优秀呢(* ^ ▽ ^ *)。 3.多个变量防止搞混,例如结构体里和外面的。 4.做题前先考虑什么条件是无用的,显然可以转化或者“压缩”的条件就不用考虑那么麻烦了。 5.矩阵乘法记得初始化矩阵。 6.如果求前几大或前几小,但是不容易求出所有情况,从一种情况到另一种情况的转移是有序的,那么可以用优先队列先存下一部分,依次向后有序推。 7.遇到和gcd、lcm有关的以及质数合数可以想一想是否能分解质因数,可以考虑一个范围内的质数个数和题目有什么关系。 8.如果数字不是特别大,可以考虑将最大的质因数扔出来,先考虑较小的质因数。 9.数字很大并且有乘除可以考虑是不是能够用取对数的方法,转化一下。 10.对于构造问题,多想特殊情况,例如它让差为几的时候可以让一个为0,再构造一个刚好为那个差的情况。(和也类似)。也可以考虑从一个点推到另外一个点会发生什么变化,依次递推出答案。 11.如果有范围限制可以考虑k维偏序,或者用树状数组线段树限制一下,如果一个限制是有序的,可以在枚举时实现从而少考虑一个限制。 12.看到字符串想一想SAM或者trie什么的,对于SAM可以dfs遍历求出所有子串。 13.如果一条边的边权给定了一个范围但没有给实际值,那么可以考虑差分约束解决问题。