PAT浙大之行

PAT浙大之行

今天是PAT秋季考试的日子,这也是我第一次参加PAT。早上本来想做一套模拟的,没想到被一道15分的题坑了半天,有一个测试点实在过不去,无奈之下通过CSDN知道输入还有空格这种情况,getline或gets都可以使用,但听说gets函数不安全,被禁用了。之后AC了一道20分的题,纠结了一道25分的题,感觉25分的题还是力不从心,果然,这印证了今天下午的悲剧。

中午12点多,骑车出发了,骑行近8公里,终于到达浙江大学紫金港校区。我去过浙江大学城市学院,去过宁波大学,感觉还是没浙大一个校区大。。5个校区加起来不知道会怎样。由于紫金港校区很大,我迷路了,问过一些路人,好像都不知道计算中心在哪里,于是我接着骑行,骑到湖旁,看见有一个好像是浙大的学生。我问他计算中心在哪儿,他说他是生物系的,没怎么去过那里,但是他按照地图大致给我指明了方向,在湖的另一侧。。终于,到达计算中心,离考试开始还有15分钟。我看到计算中心门口站着很多学生,这些学生有的可能是浙大的,有的可能是浙江的其他学校过来的。我感觉到门口的那个男孩或许很厉害,于是上前聊了一会儿。我了解到,他是浙江理工大学的,大四,和我一样参加的是PAT乙级,他从浙工大来到这里打车花了40分钟。我问他,他的学校就他一个人来考试么,他说还有一个在浙江大学城市学院考点,但我估计还有更多,而我们这种弱校呢,只有我一个,但毕竟一本重点和三本是完全不能比的,无论是就业率,学术还是其他的方面,分分钟碾压。

他说他在上个月快截止报名的时候才去报名的,然后去PTA上的乙级题库里刷了40来道,我当时有些惊讶,1个礼拜题库的一半题量就这么被刷完了,可见其基础扎实。他搞过ACM,但是没怎么待校队里。看起来他这次考试应该会考到比较高的一个分数了。

说一下我选择浙大紫金港考点的原因,本来浙大城市学院就在我们学校旁边,我完全可以省去很多路程。但是我之前,从大一开始使用的IDE就是CFREE,VS不常用,基本在面向对象设计的时候用下,而我从官网了解到,只有浙大紫金港考点才有CFREE,你可能以为算法与IDE没多大关系,但是CFREE不同于其他轻量级IDE的一点就是它有强大的C/C++函数参考手册,尤其是我现在已经转型成半个C++选手,对STL各种接口,函数的操作不怎么熟悉,如果有CFREE,考试会方便很多,也会减少很多时间。虽然,好像就是今年秋季开始,浙大紫金港取消CFREE环境了,这是在我报名之后的事情,没办法,只好用DEVC++,不过这也是我选择浙大紫金港考点的原因之一。还有一个原因很简单,没去过浙大,想看看。

         1点20分左右,我们被准许入场了,考试时间是13:30-16:30,但监考老师说可以提前5分钟开始。13:25,考试开始了。

         PAT乙级总共5题,第1题15分,大致是输入两个正整数,倒序输出其乘积,我一看,怎么会有这么水的题目,虽然DEVC++没有代码自动补全功能,但很快,我写了10来行,打算根据样例来测试。我发现页面上的测试数据竟然不能复制,只好手打,但会浪费很多分钟,这也是PAT的坑点之一吧。样例正确,不一定AC,但是我看此题逻辑简单,以为能AC,结果一个测试点硬是过不了,拿了11分,也就是说最后一个点占了4分,何其坑也。总共也就3小时,但是第1道15分的水题花了几十分钟,还是没过,太坑了。于是我看了下题目列表,提交数几千次,通过率才0.11,貌似心里舒服了一些。。从第2道开始到第4道都是20分的题,这3道分数拿全,肯定高分。

         进入第2道,题名是什么忘了,内容大致是有1,2,3,…,N,有一计算公式,和为N/2向下取整+N/3向下取整+N/5向下取整,N是从1开始到N,输入N,求有多少个不同的和,样例是2017,输出好像是1480。我一看“不同”这两个字,马上想到计数排序算法中的计数策略,定义一个一定长度的book数组,元素初始化为0,以和sum为索引修改对应元素,如果索引到的元素值为0,则元素值+1,当然还要额外定义一个计数变量index,初始化为0,每次判定成功+1即可。匆匆写完,样例通过,上交平台,一个点没过,这我就不懂了,明明算法策略很明了了,没什么特殊数据了。想了半天,发现book数组开的长度太短了。。于是改成10001的长度,通过,拿下20分,目前总共31分。

这道也算是水题了,而且我看通过率也近0.4了,为什么20分的题也有水分?我想了一想,突然有种不好的预感,果然,之后的题目“爆炸”。。

第3道题目较长,看了半天竟然没懂,可能放在平时会理解吧,想了10几分钟,决定放弃看下一道。这题的大致内容我还记得,题名是“三人行”,有甲乙丙3人,甲的水平是2位整数,乙的水平也是2位整数,只不过和甲的顺序相反。甲和乙的差的绝对值等于X倍的丙,乙的水平等于Y倍的丙。输入M(自己的水平),X,Y,首先输出甲的水平,再根据甲乙丙3人的水平和自己的对比,如果比自己高输出“Gong”,和自己一样则输出“Ping”,比自己低则输出“Gai”,如果输入数据不存在唯一解,则根据甲的水平的最大解输出,如果无解,输出No Solution。现在看来此题不难,但是考试的时候还是懵了半天,看看通过率也非常低。于是进入第4道页面,题名“狼人杀”,一看题目何其冗长,题目类型应该就是有N个人,每个人说一句话,只有M个人说的是真话,找出这M个人,这种类型的题目我见过,但是只做过1次,还是半年前做的。现在感觉摆在我眼前的是那道的升级版,题型只做过1道,又是半年前的,现在还是内容加长,输入数据多变的升级版,所以看了半天,确实对样例输入的正负号和后面的数字不知道怎么处理了,于是进入下一道。如果连样例都不能过,那么这题就是0分,测试点里也不会有样例的数据,样例只是启发思维用的。

进入第5道,25分,题名好像叫“危险箱”,有一堆商品,都有编号,但是有些成对的编号的物品危险,不能放在一起,输入m,代表成对编号组的组数,输入n,代表将放在一起的物品组数,再输入成对编号(5位数)m次,再输入k,表示每组有k个物品将放在一起,输入k个物品编号n次,若将放在一起的物品清单上的任意一个组中有危险对,则输出No,如果清单上没有危险对,输出Yes。第一感觉不是难,是繁琐,如果繁琐,肯定N多个测试点来坑你,就算你会了你也拿不到满分,这大概就是PAT吧。。敲了40多分钟,想测下样例,看看页面上的样例数据一大堆,又要手打,唉。结果手打完,一运行,对于每组k个物品,竟输出了k个相同的结果,原本应该是每组输出一个结果才对,看看代码,输出语句才嵌套了一个循环,这是怎么回事?苦思冥想数十分钟,只好放弃,再看通过率,0.05,确实此题难度很大。

第5题无法拿分,第4题“狼人杀”类型的题经验不足,理解不深,而且样例都有正负号,你还得区分,所以也拿不了分。只好把希望寄托于第3题,反复看题,终于理解了大部分题意,其实丙就是从1到上限1000枚举,每次乙的水平先通过y倍的丙得到,甲的水平初始化为0,用变量保留乙的水平,再通过对变量不断取模取余,期间甲的水平不断累加,最终得到与乙顺序相反的甲。用变量保存甲和乙差的绝对值,如果此变量和x倍的丙相等,则得到一个解,当然在循环执行之前要分别定义用来保存甲乙丙最大值的变量并初始化为0,还要定义一个标识变量,初始化为0,当得到解时,判定最大值变量是否小于当前的甲的水平,如果小于,更新为当前的甲的水平,同时更新乙和丙的最大值变量。置标识变量为1。循环结束后,若标识变量为0,输出No Solution,否则按照最大值甲乙丙的大小和自己的水平比较,按题目要求输出。

接下来发生的事情让我意想不到,甚至可以说是“计算机灵异事件”!明明算法都是正确的,一运行,无论输入什么数据,输出都是那个恐怖的3996!于是我在代码中加上break,然后debug,发现break突然被跳过去了??想了好几分钟,实在搞不懂,于是在输出语句前加上return 0,这句的作用是在输出前立即结束程序,结果一运行,我输入完,屏幕上还是跳出了3996这个数字!反复测试好几遍,无论你输入什么,在代码中加入什么语句,3996一直会显示在屏幕上!于是我把输入语句以下的部分全部注释掉,这样只有输入,没有输出,运行后,3996还是一如既往地显示在屏幕上!当时我整个人都快崩溃了,第1次碰到这种事情!于是又想了很久,想起以前做题的时候也有过输出结果不对的时候,当时是重启了IDE就好了,于是我关闭这个恼人的DEVC++,重启,运行,3996还是如幽灵一般环绕在黑色屏幕上!崩溃,绝望!想要放弃,可我不能,一是现在只有31分,太低,二是此题的算法我都了如指掌了,偏偏在运行输出上出了这么个鬼东西,心有不甘!我又想了一些时间,打算新建一个cpp源文件,将原来文件的代码拷贝到新文件中,结果3996神奇地消失了!终于松了口气,可一看时间已经不多了,大概还有20分钟不到。于是赶紧使用样例测试,样例测试结果也不对!明明算法正确,结果怎么会错?我还是提交了一下,只拿了1分,结果确实出乎意料,最后还有5分钟,随便改几行代码,提交,多拿了2分,总分34分,确实,这题算法正确,应该拿20分的,本来50分至少也是有的,可是我当时实在想不出算法正确的代码还有什么地方是不对的,可能时间再多点会想到吧,3996这个问题也耗费我数十分钟了,如果没有它,我可能这20分就拿到了。明明不该出现的bug,考场却出现了,是IDE问题?是系统问题?还是IDE本身就具有经常修改源代码会出错的问题?不得而知。

16点半左右,考试结束,但是监考老师要求我们在17点的时候来拿成绩单。出了考场,站在计算中心门口,心里不是滋味。看着马路对面的浙大新生在军训,朝气蓬勃的样子,羡慕。过了一会儿,之前我认识的那个浙江理工大学的学长走出来了,之后好像还有他的同学,加上他一共4个,貌似在讨论今天的题目,其中有3个好像是考甲级。此次考试我自然感觉不应该是这样,尤其是那个恐怖的3996不应该出现。我问了那个我认识的学长第3题如何做,他说了一句很简短的话,顿时把我的心给凉的,“丙有可能是小数”。。好吧,算法虽然是解决问题的核心,不基于数据类型,但实现时还是要考虑数据类型。我和他说我全部使用整数类型实现的,他说那我可能连一半分数都拿不到,我当时不好意思说我只拿了3分,不过3分也是运气吧,都是小数类型的还能凑到整数。。这个点,确实坑。之后我问了他第1题,他说第1题很水啊,我说有一个点总过不了,他说“哦,如果乘积是1000,那么倒过来只能是1,不能有0”,再次被PAT坑倒。。前导0?好几个月前接触过1次,这个今天确实没想到,输入忽略前导0,没想到输出也要忽略,1000倒过来必须是1?确实需要对前导0有认识,难怪这个测试点占4分了。

之后他们聊其他的题目,其中我了解到虽然甲级和乙级不一样,但是甲级的有两题竟然和乙级的题重合!虽然甲级是全英文,乙级是全中文,相当于甲级多了个英文翻译过程,难怪陈越姥姥(PAT创始人)说过,乙级满分对应甲级至少80分。之后我好像还听到他们说“狼人杀”那道要用并查集,并查集?以前了解过一点,也算属于算法方面比较深的一个地方吧,一般如果不是专门搞算法,不会碰到的。我个人是在几个月前参加的一次“算法训练营”中偶然了解到的,当然那个训练营难度比PAT还大,只上了一个礼拜就放弃了。

我也了解到他们上大一的时候就有一些关于算法的课了,假期还有专门集训的,他们大学,优秀的师资,优秀的教育制度,良好的平台,学风,在这种氛围下,想不变强都难。而我们学校呢?堂堂计算机科学与技术专业,大一上只学ps??说出去都被别人笑死,ps压根就不是计算机科学与技术专业的!到大一下才学C语言,还附带网页设计??这个也不是真正计科专业的,大一上只学1门专业课,大一下只学两门专业课,而且上课质量也不算好,教材也是错误一堆,这样的大学,简直是“臭水沟”。到了大二,连我们专业最核心的课程,数据结构都烂得不行,每次实验课只填个空,理论课上得浅,教材错误还一堆,核心课都这样,其他课可想而知。而且最过分的是完全不需要的课也有几门,像什么服务外包课,这种课有什么用?相关负责人大可列出10个理由来辩护,但是给别的学校看,他们也能列出100个理由反驳,本来就不需要的课硬要上,课时还比一些核心的课多。而且上课就算了,还专门出一个服务外包写作实训??这是计算机专业还是写作专业??到了大二下,还上多媒体技术,名字好听,其实就上个ps和flash,别人编译原理,离散数学,算法基础和理论,硬件,软件都学得差不多了,我们还在上不是我们专业的flash??还有什么BPO案例分析,还要背“我国的知识产权分类”??到底还是不是计算机专业啊??在“臭水沟”里待久了,爬上来,要除去其影响,是很难的。

我们学校向来是算法很渣的,据我所知我们专业也没几个,甚至不超过一只手算法厉害点的,由于学校已经不能满足我的需求,所以我的算法能力提升都是靠自学。自学能提高独立思考能力,但是相对于那些名校强大的师资和训练团队,效率就差很多了,我从今年3月份开始利用课余时间学算法以来,总共做了不超过200道题,除去水题,自己好好研究的应该也在100道左右,100道的题量,想PAT拿高分,确实难度大。而且PAT乙级题库也就刷了30来道,也没好好研究过,所以今天的结果也是合理的吧,30+道对应30+分。

关于学校之间的差距就说这么多了,我只希望学校能重视我们专业一些。虽然今天是失败了,但是我知道了当前获得的算法能力对考研来说,基础已经够了,如果要像浙工大学长一样厉害,除非大一就开始做专门的训练,每天刷题至少5个小时,显然现在已经没有时间刷题了。大学剩余的时间也无法补回差距,唯一能比的资本就是考研,因为考研大家基本都是大三开始复习,都是要从第1页翻起。

拿到成绩单,各地考点加起来1000+人,我排名600+,我想后100的人应该是0分吧。之后本想继续在浙大逛一逛,但想到浙大紫金港校区很大,就不再逗留,虽然是第1次来,但没必要当作旅游景点遍历,我只是个来考试的,就像运动员到某个地方参赛一般,当地的风情一般不会关注,比完基本就会回去。真正要关注浙大风景的,是生活在那里的浙大学子。

沿途拍了一些照片,骑车出浙大,这次是回去,所以在出浙大后打车回到了寝室,写下此文,以作纪念,第1次参加PAT和第1次去浙大。

                                                                                                                                   2018.9.8

                                                                                                                                                                     

猜你喜欢

转载自blog.csdn.net/qq_37729102/article/details/82557254