小赖子的英国生活和资讯

回顾20年前时高中参加信息学奥赛(NOIP)的经历

Turbo Pascal
阅读 桌面完整版

高中生活已经过去20年了, 对于我来说, 其中最为宝贵的一段经历就是在高三的时候参加了信息学奥林匹克(也就是计算机算法编程)竞赛, 并拿到了NOIP (National Olympiad Informatics in Province) 全国三等奖. 现在看来这个证书奖状的可比我高中毕业证的含金量高多了. (找工作的时候能加点分)

其实高一的时候我就参加初赛了, 可是失败了, 高二高三连续两年参加都进入复赛, 高二的时候获得省三等奖, 高三是全国三等奖, 也算每年都有进步了.

信息学奥林匹克竞赛省三等奖

信息学奥林匹克竞赛全国三等奖(NOIP)

竞赛编程语言和环境

操作系统是DOS, 编程语言可以选 Turbo Pascal 7.0 还有 MS Basic. 这两种语言都没有可以现成可以用的哈希表, 对于有的题型竞赛难度比现在可谓是大了一些.

DOS版本的Basic编程语言

当时内存受DOS限制 就是640K, CPU记得就是奔腾133 按照现在的标准来看很慢.

Turbo Pascal

初赛

初赛是笔试的, 选择题除了考算法, 还会有一些计算机的基本知识, 二进制, 组合数学. 印象特别深的是Catalan数, 经常会被拿来考. 如:

按照二叉数的定义, 具有3个结点的二叉树有( ? )种.

还有就是填空题, 看程序写运行结果 – 这个很考你理解程序的能力, 有的时候单步模拟(暴力)并无法在短时间内得到结果, 相反理解了程序的用途后就能知难而解了.

3. Program Gxp2
      Var   d1 , d2 , X , Min : real ;
      begin
        Min:=10000; X:=3;
        while X<15 do
          begin
            d1:=sqrt(9+(X-3)*(X-3)); d2:=sqrt(36+(15-X)*(15-X));
            if(d1+d2)<Min then Min:=d1+d2;
            X:=x+0.001;
          end;
        writeln(Min:10:2);
      end.

还有更变态的, 看程序填写缺少的代码. 见完整试卷: 第八届全国青少年信息学奥林匹克联赛(NOIP2002)初赛试题 NOIP-2002

这么一份试卷100分, 我初赛的时候是59分, 拿到了当年厦门市第十名左右, 顺利进入了复赛.

当时 学校的计算机老师还得和我的班主任讲才让我请假去参加复赛的机会, 当时高三, 学业繁重.

复赛

复赛是在福州三中举行, 四道题目, 上午上机3个小时, 只记得比赛一开始, 房间里的键盘声就响起来了.

一般来说, 每年四道题中会有一道 DFS深度优先或BFS广度优先算法, 一道动态规化, 一道图论的算法(最短路径), 还有就是一道送分题(可能是贪心 递归或者简单的搜索)

当年我学艺不精, 第三第四题基本上是放弃, 只懂得递归, DFS/BFS 就这样去比赛了.

下午是人工改卷: 具体就是两个老师和我的电脑老师, 还有我一起到我用的电脑边上, 然后我把我早上的程序依次打开, 这时候一个老师会让我依次输入数据, 另一个老师会看表计时, 规定时间内程序得出正确结果按测试点给分, 我记得当时第一题4个测试点我得了20分, 第二题四个测试点我得了两个10分, 后面两个用时太久了.

这和Google KickStart一样就是每道题尽管你的算法不是最优的, 但是可能暴力还是可以得到一些简单测试用例的鼓励分.

第二题后来发现得用动态规化算法, 我当时用的就是深度优先, 结果当然超时了.

很幸运, 30分刚好是三等奖的分数线, 一等奖是70分, 当时我校的一个学弟拿了满分 保送厦门大学.

后记

拿了三等奖, 高考也没有加分, 比赛后回到学校看着教室里叠起来一个比一个高的书桌, 有点失落, 高考落榜后去了北京求学, 后来出了国, 这次NOIP竞赛的三等奖证书也一直带在身边, 写在简历上面试的时候经常会有雇主对我这段经历很感兴趣.

现在看来, 我的高中并没有完全荒废, 这算是我的高中三年生活获得的最大成就了. 20年后, 我成为了一名码农, 当年的经历也常常的拿来和我的儿子讲.

教娃编程视频

每天教娃编程, 希望孩子以后也能拿个啥ACM奖.

更新: Pascal 编程语言之父 尼克劳斯·沃斯 Niklaus Wirth RIP

强烈推荐

微信公众号: 小赖子的英国生活和资讯 JustYYUK

阅读 桌面完整版
Exit mobile version