本周我参加了一场codeforce的比赛,通过这场比赛,我大概对自身水平有了些许理解,也对当前自身编程能力的优缺点有了一些感悟,不过,在介绍自身感悟前,我应当先简单的概括一下本周我自学的知识点。
一.本周知识总结
1.大于号/小于号重载
在重载时,关系运算符用于比较两个数据的大小,关系运算的结果以布尔值形式表达;而且,不止小大于,C++语言中的几个关系运算符都可以进行重载。
在具体应用中、关系运算符都要成对重载。例如,重载“>=”运算符,同时应该重载“<一“心算符。
当成对重载关系运算衬时,可以把一个运算符的比较工作委托给另外一个已经实现的运算、如,已经重载了“>=“运算符,那么在重载“<=”运算符时直接调用“>=”运算符重载函数即可。
2.搜索
搜索主要有两种类别:深度优先与广度优先,这是计算机在穷举结果时的不同方式,在听讲时原本比较疑惑,但具象化就好理解了。把起始点比作树干,在这个树干点,可能会产生n中不同的可能结果,把这n个结果叫做一级树枝,而每个结果都又各有m种可能,把这m种可能称为二级树枝......以此类推,会有很多级的树枝,但一定是可以穷尽的。
广度优先(BFS)的方式,是按照同级优先的原则来穷举的,比如,先将一级树枝的可能举出,再从二级一号树枝,二级二号树枝的方式来解决的。而深度优先(DFS)则不一样,是按顺级优先的原则穷举,即在具一级一号树枝时,先举尽所有可能,再举一级二号树枝。这样,两种搜索的不同就十分清晰了。
不过,由于老师的讲解还未结束,自己的理解也半斤八两,就先不用代码的框架表示了,不过,搜索的递归实现与非递归实现确实需要更多的时间去练习与思考,这里就不赘叙了。
当然,本周不止学习了这两个知识点,还有宏定义,set和multiset,upper_bound 和 lower_bound等等知识,不过,这里就不当成笔记一个个记录了。仅选取印象最深的两个概括吧。接下来,就简单谈谈这次比赛吧
二.比赛时的心路历程
本周的比赛我首先遇到的问题便是语言,全英文的题目直接给了我当头一棒,不得不承认,这对我的解题造成了极大的影响,而且延长了我的解题时间,对心态也产生了影响。这给我一定的警醒,不能忽视其他学科的努力,只有双面开花,才能得到1+1>2的效果。
然后,对于题目,我发现,国际赛的题目并没有介绍的非常详细,有一些没有解释到的细节,需要我们自己去理解与揣摩;同时国际赛的题目要求输入测试案例的数量,这其实就是对函数能力的考量,在比赛中,更要考虑自己的基础能力,以解决问题为第一要则,不能光想着简单了事。
而且,我发现,在这场比赛中,我暴露了自己的两个缺点,第一,就是不够大胆果断,经常自己加戏反而使题目变得复杂,其次,就是自己打代码的速度不够快,虽说有读题影响时间的因素,但做题的速度确实是一大弊病,如果自己能够再快一点,那么第二题应该就能轻松完成了。
不过,每一次比赛都是一次经验的增长,保持在日常的学习中不断努力,才能保证比赛时取得佳绩。