ACM程序设计基础结课总结_20200614

  1. 简单感慨

一个学期转眼间就过去了,这样过的学期,真是做梦都想不到。这个大学生活一开始确实小挫折不少:开学前骨折,上学期在学校呆了不到两个月,而且两个月间因为行动不便除了待在宿舍也没整出什么花来;然后本来想下学期好好学习,改过自新,大展宏图,结果又碰上疫情,就这样,一个学期愣是变成了在家养膘。
说实话,一个高中选择过在家自己学习的人,是从来不会相信在家也能自学的,事实果然如此——唉,本来自制力就是绝对的弱项。希望下学期能如期开学,也希望这学期别挂科。

  1. 学习总结

这门据说是大学期间最难的课,说实话言不为过。首先,东西太多了;其次,不为应付考试;再者,很多东西理解起来也确实有难度。但是,选这门课我不后悔;没有它,我这五六个月的网课时期更惨。
算了,徒来抱怨没啥用处,简单总结下这门课的收获吧:

  • 从0基础开始算,基本上算是勉强入门了,虽然还是简简单单地浮在水面;毕竟,曾经还是只会“hello world”
  • 至少对需要学习的东西简单的有了一定的了解,相当于学习了一个目录吧——毕竟,没有一定的刷题量,离学会还是太遥远了;dp直到现在还是一知半解,模模糊糊,曾经有一次在cf上碰到一个题目苦苦思索毫无线索,过了几天才反正过来这不就是个dp的题目吗?(碰到模拟超时要考虑dp啊)学的还是不熟练,除了做的那几个例题,其他的题目怕是一个也做不出来——甚至是那几个例题,再做一次也会特别吃力,甚至不一定能做出来。贪心什么的还好说,就是碰到复杂的贪心问题还是做不出来,毕竟有些题目贪心策略太难想了。二分之类的小算法还好说,不过实际情况下用起来还是low_bound好用,自己写二分的题目目前还没有在cf之中碰到过(当然做题太少也是一个重要的原因)。STL至今学的是一知半解,主要是很多东西用的比较少,很容易忘掉代码怎么写,然后用到了还需要去找书。最主要的问题还是做题太少。至于图论,这个算是数学问题,还是三个字——多做题。其他的,包括递归、简单的数据结构什么的,就是学了一个目录。
  • 论起来,学习习来这么长时间,还是挺迷茫的。毕竟,这个东西学起来,感觉有种奇奇怪怪的感觉,写不太出来,就好比说高中数学吧,没有课本,没有辅导书,就只有一本考试大纲。现在,老师简单的把考试大纲上前几章的内容说了下。然而,具体需要怎么个学法,还是一知半解。难怪老师最后给我们的一千多篇博客说是礼物。或许,以后真的要把这一千多篇的博客从头到尾读一遍了。毕竟,一前没有参加过学科竞赛,因而之前对于学科竞赛应该怎么学确实是毫无头绪。刚刚离开高中升入大学,说实话,对于大学的学习方式还是不太适应。其实,自从上了高中以后就一直没怎么适应过来该怎么学习——老师灌输的内容老是娴太简单、没意思,自己探索又不太会,因而也就导致了自己逐渐丧失来对学习的兴趣。说白了,自己就根本不会学习。这样看来,大学剩下的三年确实是时间紧、任务重啊。怎么说,也不能放弃。正好借学习竞赛这次机会,学习下怎么学习吧。就是希望时间还来得及。
  • 关于这一个学期的学习,与其拘泥于其中的失去,倒不如面向未来。说实话,自己什么情况自己最清楚,就算是这一段时间能重来,甚至是重新回到九月一号开学的时候,也未必能做的更好。说实话,投入在竞赛学习上的时间是远远不够的,相对其他同学而言更是少的可怜。目前,差距确实是存在的,而且日益扩大。但是,相对于其他科目而言,这门课又是我在家里的这一段时间投入精力最多的一门课。这个事情挺矛盾的,但是毫无疑问,我绝大多数的时间都是献给了自己的体重。不过,好在目前还能看到一点希望,我相信以后会越来越好的。
  • 至少,关于竞赛到底要学哪些东西我还是有了一定的了解。曾经,我以为紫书就是全部,但是现在发现,紫书上虽然知识点很多,但是最多只能当目录看。想学会这么一样东西,不是说看几本书就可以的,而且也不能这么学。书籍只能靠工具,关键还是自己的思考与理解。毕竟,微软的c++文档几千页,未必有人真的能看下来,而且,就算真的去完整的看下来,也未必有什么用处。只有多写代码,多加练习,才能真正地去融会贯通。就像数学一样,单纯的去学习一种方法——比如换元法没有任何用处。换元法一句话概括:令a=b,然后呢?真正看到题目的时候能想起来吗?就算能想起来,人家会给标上说是用换元法解决吗?只有多做题,理解了这种思想,把它融入自己的意识当中,才能捻之即来。就像dp,只去背哪一类题型的状态转移方程没有任何卵用(其实还是有点的),还不如把它当成把一个大任务细分成几项的小任务来理解(虽然也不好理解)。
  1. 课程内容整理
  • 递归
  • 贪心
  • dp(包括背包、区间dp等)(一半以上的时间学了这个)
  • 二分、三分
  • 数论
  • 数据结构(树状数组、线段树、单调队列等)
    不要脸的借鉴下某个同学的博客,包括学习内容整理以及相关例题
  1. cf比赛总结
    cf是个伤心的话题,首先这个比赛时间就有点倒霉,倒时差不容易啊。
    然后,说说正题。目前参加了十场比赛(有一场倒霉的div2比赛不计成绩,难得的自我感觉良好),勉强能看懂题意(虽然很多要借助词典,不过其实很多生词都是废话),基本上div2还是只能a两题(通常,别碰上莫名其妙的倒霉bug),div3能a三题(当然个人感觉再多一道也没问题,还是别碰上莫名其妙的bug),自以为如果不是比赛所限还能做得再好一点,关键是碰上bug容易心态崩溃,唉。基本就这么个情况,仍需要继续去努力啊。
    不过,说实在,这东西对我胃口,可惜为了晚上有精力下午需要补觉,以下是一些问题与思考:
  • 前三题是目前的主要目标。在做题的时候一定要注意这也不是纯思维题啊。虽然很多是需要人工推结论,还有些只是单纯考读题写代码的能力,只是把很长一段废话转化成代码就可以了,但是很多题目尤其是div2的第三题 也是需要算法知识。
  • 碰到一些比较大的数据量,别太愣啊。说实话,目前水平不够,还看不出来穷举会不会time out,乃至一些穷举就能解决的问题会不敢下手,但是穷举做得题目里基本会说所有测试案例加起来不超过多少个ai或者什么的。往往,那些10^5数据范围量的题目要考虑下dp之类的算法,再大一点的话可能是数据结构的问题,再大的话推规律或者二分的可能性比较大。
  • 一定要注意仔细读题,考虑一些特别坑的情况,尤其是卡某一组测试案例过不了的那种,一定要再去看看题目。最烦的就是那种Wrong answer on test case 5之类的,明明大多数测试样例都过了,却被卡某一个样例。这种情况,可能是忽略了某个特殊条件,也可能是题目没读仔细漏下来什么东西,也有可能是代码之中出了什么bug。另外,这种情况下一定要注意保持心态。这样的题目以后可以专门列举下来积累一下。
  • 注意那些比较复杂的题目,别看需要写几十行代码,也有可能只是简单的模拟。千万别别复杂的操作给吓住了。目前来说,十几二十行的代码的程序写起来往往是一气呵成,再长了就会感觉各种别扭。这是一个问题。在打比赛的时候千万要注意心态,相信自己,觉得有可能这么做就写下来试试,千万别根本不敢下手。毕竟,错误的经验也值得去积累。什么都不干会更慌。别怕错误。
  1. 未来规划
  • 放弃是不可能放弃的,就算是当炮灰也要继续学下去
  • 多跟同学们学习,博客可以用来当错题本,网络不方便先写成md文件再统一发布,充分利用其博客来,一方面整理错题,另一方面也能激励自己学习
  • 继续打cf比赛,争取一场不落。另外,比完后一定要写总结。时间只要别用来荒废,不怕花费的太多。
  • 根据协会的学长推荐的教材进行下一个阶段的学习。以后在学习的时候一定要做笔记,哪怕是自己用笔划划。
  • 相信自己,其实自己只要努力,一定能做好的。不要被吓得不敢前进。
  • 继续解决拖延的问题,加大时间投入。

你可能感兴趣的:(ACM程序设计基础结课总结_20200614)