周记009

56 阅读4分钟

上周没有写下周记,因为太忙了。忙着写题,和上算法课。还有学校的一些事情,参加了一些社团。

干的事情

首先,汇报一下我这两周干了些什么:

首先,把算法课向下学了一节,但是由于我是是一只榆木脑袋,课后习题都没怎么做。上课的时间段,基本上都用来看算法课的代码。

第二,还学了一点高数,主要是上课听不懂的时候,去看的。

第三,去上了学长组织的英语口语的课程,都是每天晚上上完晚自习的时候,去学的。

第四,上周忙的就是这个,去面试办公部。也是轻而易举的就进去了。还有一个足球院队,里面有很多厉害的人。

学的东西

接下来,总结学到的知识。基本上就是学到的算法知识。一个二维前缀和,一个位运算,还有一个倒序查询字符串的子序列。

二维前缀和

二维前缀和:主要是依赖一维的前缀和上,做出的衍生。一维的前缀和就不过多的赘述。直接讲二维前缀和。本质上是一样的,创建一个二维数组,然后用后面的数组,来表示前面数组记录数的总和。在算法中,这有一个很好听的名字,叫做“维护”。而二维数组,考虑的情况比一维的多一点。就是a[i][j] += a[i – 1][j] + a[i][j – 1] – a[i – 1][j – 1]这样。具体来说,先把上下加上,然后减去重复的部分,最后加上这个位置本身,用来更新和维护前缀和的数据。

位运算

位运算:大抵上来讲,这个东西就是用来节约空间的,用来节省文件的复杂度。当然,这一块也是最难理解的,个人认为非常抽象。在这之中,想起了一个超级有用的东西,便是bitset<> b[],这就是这个玩意的定义方式。这个确实十分神奇,他可以以一个二维数组的形式来存储二进制。也可以利用位运算,来对里面的二进制数进行运算。在牛客的题目中,这个就是用来被巧妙地利用为,记录是否存在。因为只能表示0和1,所以每一个位数就用来表示是否存在。

查找子序列

倒序查询子序列:一开始,我只会使用双指针来查询子序列。但是,那样做会十分繁琐,所以就萌生了一个想法:找出每一个相同字符的第一个所在的位置。那么,该如何去寻找呢?从末尾开始,不断循环,不断进行更新。其中,在那一题中,还有一个很有意思的思维方式。刷新了我对于数组的理解。本来,数组只是用来存储数字,但是他也可以用来实现连接。意思就是,在每一行里,用一列来存下一行的位置。听起来有一点像指针。这种算法听起来很玄幻,也很容易理解,但是用起来就是天外飞仙了。

思维

接下来,就是记录我学习的思维。刚开始学习算法的时候,是非常辛苦的,现在也是。虽然说,我已经不会在语法上面出现大问题了,但是算法思维给我带来的巨大的震撼。常常冒出这样一句话“啊?还能这么写?”。基本上是十道题有九道题不会,看别人的代码,还有一道连题目都读不懂,直接跳过。各种各样的算法思维,直接撬开了我的天灵盖。现在,才是刚刚开始,连贪心算法还没有学到。不过,在不断地学习之中,我明白了:只要我还没似,就还有办法。

 

最后,在写文章的过程中,我想到了一个问题“是上帝创造了人类,还是人类创造了上帝?是我创造了白月光,还是我的女神创造了白月光?”

计划

下周的计划,由于今天时间利用不佳,没有能够完成一周一节算法课的需求。所以,写完这篇文章之后,就去看课。本来也是打算复习四级,也没能够完成。我爸还让我入党,要写三页纸的入党申请书。数学作业也没有写。主要还是把课看了,该明白其中的例题。然后,复习四级。