从OI谈起

提到OI,也许很多人并不清楚这是怎么一回事。对于在学校就学习过数学、物理、化学和生物的同学们来说,“国际五项学科奥林匹克竞赛”中的这四门是相当熟悉了(相对OI来说)。而OI/信竞/计算机竞赛又是什么?听名字跟计算机有关,他们不会是修电脑的吧!

OI,全称Olympiad in Informatics,指的是"信息学奥林匹克竞赛",是一项在中学生中广泛开展的一门学科竞赛,和物理、数学等竞赛性质相同。OI不考修电脑,不考ps不考使用ppt制作文档编辑……(当然顺便学一下LaTeX还是很资瓷的_(:з」∠)_)。实际上,OI考察的内容是通过编写计算机程序,运用算法和数据结构知识,解决一些实际问题。

差不多是这种“实际”问题

可见,OI题目的实际考察内容还是知识本身,正如理化生竞赛要考察大学知识一样,OI的主要内容同样是大学中的有关内容(中学有什么算法知识吗[捂脸])。相对来说,OI对于编程语言本身的掌握要求就很浅。总的来说,OI的题目更偏重理论和数学层面。

OI竞赛的形式也独树一帜,你需要根据题目的要求写一段程序,评测并不是有人盯着代码一行一行看,而是采用黑箱测试,共有多组数据,每组输入数据后只要在规定时间内输出正确结果就算通过,最后根据所有数据的情况确定分数,可以说没有任何主观因素的影响。

THE SECOND

关于OI的特点

OI有很多比赛,其中较关键的两项为全国青少年信息学奥林匹克联赛(National Olympiad in Informatics in Provinces,简称NOIP、联赛)和全国青少年信息学奥林匹克竞赛(National Olympiad in Informatics简称NOI、竞赛)。NOIP相当于省赛,由全国统一命题,各省自定分数线;NOI则是全国赛,会分出金银铜牌和集训队

OI作为编程竞赛,自然对编程能力有着一定的要求,但这并不是什么很高的门槛。对于初学者来说主要有两大难题:一是编程思维,二是经验与习惯问题,这都是可以通过做题解决的,毕竟OI又不是工程开发。除去写代码的部分,OI与数竞有很多相似之处(因此同时搞数竞和OI也是可以相互促进的选择)。OI的知识点不多,更多考察的是掌握理解、问题分析,甚至是临场应变的能力。某位老师曾说过:“竞赛是智者的游戏。”但其实在OI中,除去少部分智商碾压的大牛,通过勤奋积极而有效的学习同样可以取得理想的成绩。

NOI系列赛事是在激烈的高考竞争下升学的一条捷径。如果在清北的冬/夏令营中发挥不错或NOI等比赛中取得较好的成绩,就可以拿到相应的降分。在NOI中拿到银牌,就可以签到复交等学校的一本线。即使重心不放在OI上,拿到NOIP省一的性价比也是很高的,毕竟省一是诸多学校自招的敲门砖,而双省一的价值也远远超出单科省一,而目前在本省拿到OI省一的难度是远小于别的竞赛的。

某位不愿透露姓名的hzy学长就曾经在拿下OI省一之后顺便进了个CPhO国家集训队

参与OI不仅能为升学助力,还能极大地提升计算机水平。也许之前你是一个电脑小白,但在经过OI的学习后,你也许已经对计算机的原理有所了解,你也可能熟练地掌握编程技能,你以后还可以在大学的相关课程上刷分。毕竟在现在,编程是几乎很多学科都绕不过去、离不开的。如果你打算进入EECS方向学习,OI基础更会让你受益匪浅。而且,OI中锻炼的严谨的逻辑思维能力无论在高考、竞赛还是在日后的学习中都相当重要。

THE THIRD

关于OIer的能力

学习OI的过程,除了具体知识点,就是一个不断做题的过程,从在线题库、模拟赛到真正的比赛,你将一直和题打交道。但学习计算机竞赛也是一种“应试教育”,毕竟大家直接的目的还是在赛场上考到高分,而临场发挥是相当重要的。因此,OI需要重点练习三个方面:

1. 对知识的掌握和对题目的分析能力。OI涉及到许多种算法和数据结构,理解其原理、实现和有关技巧是每名OIer的基本功。但是OI赛场上极少出现“裸题”,也就是直接使用某种方法就能做出的题,更多的题需要深刻的理解和巧妙的思路,运用某些算法和数据结构作为工具来完成。如果你没有超高的智商,那么不得不说这是离不开大量的刷题的,有了大量的做题经验后,一来你对很多算法的理解更深刻了,二来你解构题目运用算法的能力也会更强。

2. 代码能力。代码能力说白了就是把想法实现为具体代码的能力。代码能力的强弱直接制约着一名选手的水平,因为OI比赛中时间是非常宝贵的。提升代码能力同样没有什么捷径,只有不断去写一些看似很麻烦的题才能逐渐提高。

3. 临场发挥的能力。OI的赛制为每场5个小时(NOIP为3个半小时),3道题,每道题根据不同的做法有不同的部分分,NOI、NOIP均为2场(冬令营、APIO等为1场),最终计算总分。每一道题都要经过读题,想做法,代码实现,调试和最终的对拍,由于分数高的做法较为困难,每道题往往还要写n>=2种做法用来保底。因此看上去漫长的5(3.5)个小时其实是不太够用的。如何分配时间、高效地测试,都要在一场场的模拟赛中逐渐掌握。

THE FOURTH

几条建议

上面已经很多次提到,学习OI没有什么捷径,但是却有可能绕弯路。投入大量时间、精力却收不到成效,的确是一件很让人苦恼的问题。因此,这里有几条小小的建议:

1.一定要高效地做题。高效不是指速度快,而是指有收获,比如做完这道题能让我熟悉这个算法的模板,或者能让我有一些新的思路,或者能提升代码能力。总之一句话,不做无意义的题。

2.正视模拟赛,把每一场模拟赛当作正式比赛来打。这不是什么态度问题,而是真的只有这样才能锻炼自己分配时间、写部分分、对拍等能力。

3.学会调整心态。在赛场外,你可能因为训练影响文化课学习而焦虑,可能为怎么努力也赶不上一些大神而苦恼。在赛场内,你也可能因为一两道题导致心态爆炸,比赛崩盘。不是一切都会顺利,你需要一颗大心脏。

4.及时确立高中规划。具体到OI上,就是要不要把重心放在OI上,要不要停课,什么时候停。这需要你对自身的实力有着清晰的了解。切忌两头放不下,最终不论竞赛还是高考都不尽如人意。

5.如果最终的成绩还是不理想,没有关系,这只是漫长人生中一个微不足道的小插曲,你的眼前还有一片更广阔的天地。

最新文章

  1. Linux使用手册-时区和时间设置
  2. MongoDB windows解压缩版安装
  3. 【rqnoj378】 约会计划
  4. ADF_Desktop Integration系列4_ADF桌面集成入门之部署ADF Desktop Excel
  5. 学习笔记——Maven实战(六)Gradle,构建工具的未来?
  6. Java基础-字面值
  7. Spring boot 1.3.5 RELEASE 官方文档中文翻译--目录
  8. ORM之一:适合我的ORM
  9. Linux crontab定时执行任务 命令格式与详细例子
  10. 4 - 执行TestNG
  11. C++ —— 非常量引用不能指向临时对象
  12. 1 Java学习之 基本数据类型
  13. 【性能】web提升性能的小总结
  14. JavaScript Html页面加载完成三种写法
  15. Python模块学习------ 正则表达式
  16. mysql远程连接缓及缺少*.dll文件解决方案
  17. easyui 在编辑状态下,动态修改其他列值。
  18. JDBC:SqlServer连接TCP/IP连接失败,到主机 的 TCP/IP 连接失败。报错信息:com.microsoft.sqlserver.jdbc.SQLServerException: 到主机 的 TCP/IP 连接失败。
  19. 【转贴】一次 JDBC 与 MySQL 因 “CST” 时区协商误解导致时间差了 14 或 13 小时的排错经历
  20. Cocos Creator JS 时间戳日期转换

热门文章

  1. (Java初学篇)IDEA项目新建流程和软件配置优化以及怎么彻底删除项目
  2. 9.MongoDB系列之创建副本集(二)
  3. PHP配置负载均衡
  4. 15行python代码实现人脸识别
  5. 使用doctest代码测试和Sphinx自动生成文档
  6. 42.JSON Web Token认证
  7. LVS综合实验
  8. Spring Boot 应用的热部署配置
  9. LAPM概述及配置
  10. CSP-J2022 题解报告