今天下午主要看了A题,多了解了一点打表的方法,然后学习了一下欧拉降幂,知道了当幂不断变化,幂需要取模的时候,需要用欧拉降幂,多多学习了一下。还看了C数位dp,这个题其实推出了数位dp后,就是个模板数位dp,但是推出那个规律很难,题解是做一下差分,并且对差分取4的模,找出的规律。并且还转化成了二进制,做了进一步的转化,才转化为了数位dp。所以说,现在做的这些题,都要经过不断的转化,才能转化成算法能够解决的东西。现在感觉到,算法只是一种工具,主要是想出思路,并且对题目进行简化,转化,转化为某一种能够解决的模型,然后使用算法,求解某一些值,用于解决问题,或者直接求解答案。多校的题目,我感觉难,就难在转化很麻烦,很多题是用数论知识,或者找规律+思维等等,或者打表,这个比一般题目要复杂一点,当然,这只是过的人数目不多不少的多校题,像那种教主才能做出来的题 ,难度肯定加大了很多,不是我们所能猜测的。
还看了最后的拓扑排序,这个有人用思维+拓扑做的,那么线段树优化建边+拓扑就是暴力优化了。可见,很多题做法很多,不一定题解就是最简单,最适合自己的。
通过做了这些多校题目,和打了这些多校。总结了很多题型。
1首先是签到题,这类题型一般就是不复杂的模拟,贪心,优先队列类似知识,简单dp,简单数论等知识。主要考察基础算法和代码能力。只要学习过大多基础算法,并且练习过一段时间,都可以解决,解决速度就取决于打比赛或者训练的时间。
2然后是模板题,这类题,多校很少出现,几乎不可见,除非是出题人的锅。这类题一般属于签到题,但也不完全属于,因为主要是考察知识点,需要你学习过知识点,才能很快看出是哪类算法的模板题,不然只能冥思苦想。
3.需要一定简化题目信息或者利用题目信息重新建立模型,或者思维,或者找规律,打表,转化为自己能够用已知算法解决的问题,然后利用已经学过的算法解决问题。并且往往时间复杂度需要优化,直接利用算法可能超时等等。这类题往往做出来的不是很多,难度主要看出题人了,因为ACM比赛大部分都是这种题。
4.构造题,直接找规律题,这类题,都是需要找规律。往往不需要用到算法,但多校中的这类题,有时候签到,有时候会有难度。
所以,我们就努力练手速,解决签到题,尽可能多的掌握一些简化题目或者转化题目的方法,至少基础的转化都要学会,这样基本的3类题型就可以做出来了,因为这类题,简化是一个关卡,算法是一个关卡,缺一不可。多见题,训练思维,为找规律,打表,构造,训练能力。
努力学习知识,多见新颖经典题型。