第三周博客总结

这一周自己对自己的学习方法作了改进,自己也对算法知识有了一定的认识和了解。要在短时间内高效的学习算法,我认为就是要按照算法专题进行集中学习和训练,并且学一节就要做相应的题目,并且要做好总结,一些题目的思路或者说是共性的地方,一定要积累下来。学习由浅入深,一层层的推进。这一周自己已经把深入浅出这本书剩下的部分正式看完了,大体的内容自己也有了一定的了解。并且这一周自己已经正式开始细细的看算法笔记这本书了,也看了一部分老师发的材料。

自己觉得STL容器,就是对之前一些复杂的东西进行的简化,有了一个统一的标准,而且对之前的一些内容有了升级,用起来非常简洁高效,节省了很多时间。

vector就是一种变长的数组,自己觉得比普通数组好用多了。可能求数组的长度,之前还用sizeof(arr)/sizeof(arr[0])来求长度,现在只需要用一个v.size()来求就可以了。有一个细节的地方,如果定义vector<vector<int> > name,>>之间是要加空格的。访问容器中的元素有两种方式,一个是用下标访问,一个使用迭代器访问,类似于指针,感觉用迭代器访问更加方便一些。需要注意的是,只有vector和string才可以用v.begin()+i的写法,其它容器不能用,而且也不能用*(it+i)的访问方式。set容器,可以让内部元素自动有序并且不含重复的元素.访问元素的时候,for(set<int>::iterator it =st.begin();it!=st.end();it++),不能写成it<st.end()的写法。set容器就是去重并且按升序排序,遇到需要去重但是却不方便开数组的情况,数组解决不了的问题,可以用set来解决。string可以说非常好用,平常定义字符串,可能得用char ch[100]这样来定义,但是后续很不好操作,所以一般就直接定义string类型,一些拼接之类的操作用起来非常便捷。这三类容器都有一些共性的地方,像是size(),clear()之类的,是它们共有的特征。

知乎中的一个作者讲述了从零开始的程序设计大赛,从他的叙述中,自己也发现了自己的一些学习上的错误,有些固定的模板直接粘贴是一个非常不好的习惯,自己真真正正靠自己把它打出来才是真本事,一定要独立的把它完成。自己发现还有一个很不好的习惯,自己平常也喜欢刷题,但只追求数量,而不追求质量,没有总结出题目的共性和思路,这一次错了,可能下次还错,处于一种盲目的状态了,做好总结,写好典型题目的解题报告,不贪多,追求质量才是重要的。要把不会的题目消灭掉才行,平常容易犯的细节性错误多加注意,把知识学的精通一点。

朝夕的ACM笔记,自己看了他写的一些内容,说真的,自己看的有些吃力。但是自己了解到,一维前缀和就是Yn=Yn-1+Xn,二维的前缀和就是一个矩阵内值的和,矩阵又可以有两个行数或列数少一的子矩阵组合后,删去重合部分再加上右下角的值来构成,就是Bx,y=Bx-1,y + Bx,y-1 - Bx-1,y-1 + Ax,y。前缀和可以有效的降低时间复杂度。倍增算法的核心就是to[x][i]=to[to[x][i-1]][i-1],但是还没完全理解这个式子的原理所在。折半搜索,就是把一组数据分成两部分,分别进行查找,提高查找的效率。单调栈就是再先进后出的基础上,再遵循单调性,可以快速寻找距离元素最近的比它大的或者小的元素。树状数组是一种数据结构,相比于线段树,树状数组满足的功能要更少,但是简洁易于理解。以上就是自己目前所能了解到的一些知识,可能有些浅陋,但是自己也沉下心来去慢慢的学习这些算法知识了。

可能自己才刚接触算法,知识体系还不够完善,一些题目自己还是没有任何的思路,而且自己也知道比赛都是英文叙述,自己往往看到英文就发懵,往后自己还是要对这些方面进行加强,不能因为小的失误而不知所措。目前自己做题还是少,下周自己将加强训练,学一节就做对应的题目。一步步的不断提高算法能力。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

暗紫色的乔松(-_^)

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值