PAT甲级满分有感

时间轴:html

  • 2017年,数据结构加入了个人课程清单。
  • 2018年12月,我从网易云课堂下载了数据结构的全部课程视频(学校里没有网,只能离线看),开始一刷。一刷只看了视频,基本没有作题,看到AVL树的时候已经懵了,后来不了了之。
  • 2019年7月,我开始二刷数据结构。事实证实不写代码一刷是没有用的,到后面彻底不记得之前看过。此次我跟着进度来,每一个算法都造轮子,每道题都作。我开始上PAT平台刷题,DSA题集的数据结构部分刷完之后,就开始刷甲级题,以为难度适中,决定参加PAT甲级考试。
  • 2019年8月,我开始写PAT甲级分类汇编,分类整理了1051~1100的题目。作题的同时,也逐渐理解了PAT出题的思路。
  • 2019年9月8日,我到上海大学计算中心参加PAT甲级考试。13:30开考,15:30满分交卷。我,PAT甲级,退役。

 

感想:c++

  • 此次考试不难,各类模拟题也不难。说到底,PAT甲级就是不难。多作题,边界状况就天然会处理了;多造轮子,熟悉算法,每种算法都把写法固定下来,万一出了问题本身也看得清楚;善用C++,把标准库容器都玩懂,尤为是std::vector和std::map,不少原本要本身实现的算法就能够交给标准库了。
  • 在刷题的时候参考过一些别人的代码,大多都是C++写的。然而,不少人表面上用着C++,实际上干的倒是C的事情——只用到了C++众多特性中C的那一部分,惟一用到C++的就是std::vector、std::map、std::sort等常见容器与算法。C++是(最)适合描述数据结构的语言(之一),这话没错,但C++远不止数据结构。C++提供了namespace,有些人却要using namespace std;(参见这个问题);C++提供了lambda表达式,就算不用,也有std::greater,有些人却要本身写谓词函数;你要是说C++11是新标准,兼容性很差,明年C++20标准就要发布了,你却还在用C++98?咱们既然选择了C++做为一个工具,就有义务好好利用它。
  • 上海大学的开发环境真的差。Dev-C++好像是4.9.9.2版本,没有代码提示,甚至没有括号补全,每一个字符都纯手打。GCC还在用3.1.1,我想写个-std=c++11都不行。讲真,用惯auto后不再会写std::vector<int>::iterator了。不知道为何PAT会选上海大学做为考点,我之后也不想再去了。
  • 我对本身的C++挺自信的,在于我会的语言工具已经足够。然而,与竞赛深挖算法不一样,个人学习路线很长时间以来都是以编程语言为主的,而数据结构与算法是薄弱的。这段时间的刷题,以及这一次考试的结果,弥补了这一空缺。

 

展望:算法

  • 数据结构是不够的,作题的时候就有体会。新版考纲出来以前的题,有些就不会作,好比动态规划等,须要学习算法课程才行。同时,甲级考完该考顶级了。
  • NOIP没了,其实是更名了。我从小不学习信息竞赛,离NOIP最近的一次是上物理课的时候几个同窗要去考NOIP。若是要NOIP走下去的话,高三已经晚了,但我仍是想参加一下。提升组的难度是高于甲级的,算法确定是要学的;赛制也很不同,须要时间去适应。
  • 如今我编程语言OK了,算法也完成一半了,计算机组成结构等课程也要相应跟上。这些都是要花时间的。