2020.1.15~1.20学习总结

15号

放假第一天,下午才回到家,虽然满身疲惫,但还是完成了当日的每日一题。

当天的主题是快速幂,记得我第一次听学长将快速幂的课的时候我是满脸的疑惑,

我当时就想啊为什么不用pow函数,

后面再想包括看别人的博客的时候也逐步理解了快速幂的原理,

知道了他快在哪里(结合递归不断地将指数二分)。

不足是交题的时候还是错了一次,没有注意到数据范围,

导致了罚时以后交题前一定看清楚,不能白给。

16号

今天没有每日一题,就把之前三次测试的补提刷了一下。

运用栈和队列的时候结合数组,主要就是他们出的方式不同

栈就对数组尾部进行加减即可

队列则要设两个变量,入队时尾部变量自加,出队时头部变量自加

根据具体题目灵活运用两种存储方式。

经典的题目像括号的匹配、回文串这些都可以运用栈进行解决。

17号

今天的每日一题知识点是尺取,也是第一次听说这个词

当时没太看懂那篇博客,直接去写的那个题

循环求和存储起来再找最大值,结果时间超限

后面又认真的去看了那篇博客,这才领会到尺取的精髓

边求和的时候边比较,并依据比较结果改变区间的左右端点。

今天还是西邮冬训开营的日子,

讲了ACM的一些思想,模拟。

开了题组之后马上做了几道,第一周的题目还是比较基础。

18号

今天继续补之前测试的补题,发现kmp这个东西我还是不太会

Kmp算法相对于朴素的匹配算法节省了不少时间

能够跳过一段不用匹配的字符

其中比较重要的一个环节就是求他的next数组

只有得到了next数组才能知道可以跳过多少字符不用匹配

虽然没有把KMP搞全懂,但对于next数组还是颇为熟悉了

19号

今天的每日一题知识点是归并排序,归并排序讲究的就是分归、合并

先将要排序的一串数字劈开,劈到最小有序数列(也就是一个一个的时候,只有一个那肯定有序啊);再将他们逐渐合并,继而变成一个有序数列。

运用归并排序我解决了一道求逆序数的题,因为每次合并存入新数组时就代表有一个逆序数对,只需在原有的代码中加一条计数代码即可。

20号

今天着重刷了一下西邮的题目,发现还是有一些比较有趣的题目的,

比如“我爱吃披萨”那道题https://vjudge.net/contest/352449#problem/M

就是将总人数取余2再判断就行了,但若不知道恐怕也得想上一阵。

不足就是忘记了特判的情况,人数为1时 不用切,输出0.

其他的题目都是一些涉及模拟,基本算法的题目,也算巩固了基础吧。

总而言之

经过6天的学习,三天的每日一题学到了三个写的算法,通过补题和西邮的题目巩固了之前学习过的一些知识,通过回顾发现Kmp还不是很会,有了学习的重点和方向,希望在下一阶段的学习中能够再接再厉。

你可能感兴趣的:(2020.1.15~1.20学习总结)