OI是什么?
从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.如果最终的成绩还是不理想,没有关系,这只是漫长人生中一个微不足道的小插曲,你的眼前还有一片更广阔的天地。
OI是什么?的更多相关文章
- 再见,OI
你好,NOIP 2015年9月1日 正式成为了福建省莆田一中的一名高一成员 后来学校搞了选修 大家都很激动 因为自己的兴趣和特长能够得到发挥了(或者说能逃课或者看好多电影) 发现选修提供的选项中有好几 ...
- 告别我的OI生涯
本文章写于2008年12月15日. 随着2008noip的结束,我也结束了我的OI生涯. 信息竞赛也许是从小到大让我最最努力的一件事.我记得参加2006noip初赛前,每天中午为了上信息课都吃不上中午 ...
- 收集一些关于OI/ACM的奇怪的东西……
一.代码: 1.求逆元(原理貌似就是拓展欧几里得,要求MOD是素数): int inv(int a) { if(a == 1) return 1; return ((MOD - MOD / a) * ...
- 继续OI
NOIP2016于2016.11.20日12:00正式结束. 我作为oi的生涯 或许会结束? 或者继续? 然而前途依然迷茫,我是否应该继?或是放弃? 距离省选还有3~4个月,我该何去何从? 虽然已经经 ...
- 再见OI
NOIP2016终章 自己弱还脑残加手残 再见OI 你好高考 你好明天 "没有泪水的日子会轻松很多 但我的心还是会痛" ------------------------------ ...
- 他们在军训,我在搞 OI(Ending)
Day 7 上午看看数学书,老师让我把导数相关的概念学了.这也没有多高大上,就是一坨公式需要背,什么 (a)' = 0 啦,什么 (xn)' = n·xn-1 啦,什么 sin'(x) = cos(x ...
- OI总结(垃圾排版就忽略了吧)
学OI一年了,到现在联赛所需要的知识已经基本学完了.现在,有必要回过头来,总结总结自己一年来学到的知识以及得到的经验教训. 基础 语言基础 C++的语言基础啥的就略了吧. 算法复杂度分析 O:复杂度的 ...
- 关于我的OI生涯(AFO){NOIP2016 后}
这篇我就随意写啦~不用统一的“题解”形式.♪(^∀^●)ノ 也分好几次慢慢更吧~ 对于NOIP2016的总结,我本想善始善终back回,但是心情不足以支撑我,那就只能有始有终了......下面进入我的 ...
- 浅谈分治算法在OI中的应用
分治虽然是基本思想,但是OI中不会出裸分治让你一眼看出来,往往都是结合到找规律里面. 先来个简单的: 奇妙变换 (magic.pas/c/cpp) [问题描述] 为了奖励牛牛同学帮妈妈解决了大写中 ...
- OI 中的 FFT
不行啊最近备考简直变成文化狗了= =..我还脑洞大开想学俄语什么心态.. 简单地说一下FFT(来,跟我一起念,法〰法〜塔,法斯特~福铝页~圈死佛而母).. FFT本来是做信号变换用的,当然OI和信号变 ...
随机推荐
- 两将军问题和TCP三次握手
两将军问题,又被称为两将军悖论.两军问题, 是一个经典的计算机思想实验. 首先, 为避免混淆,我们需要认识到两将军问题虽然与拜占庭将军问题相关,但两者不是一个东西.拜占庭将军问题是一个更通用的两将军问 ...
- Java程序员必会Synchronized底层原理剖析
synchronized作为Java程序员最常用同步工具,很多人却对它的用法和实现原理一知半解,以至于还有不少人认为synchronized是重量级锁,性能较差,尽量少用. 但不可否认的是synchr ...
- 前端开发日常——CSS动画无限轮播
近来没有什么值得写的东西,空闲的时候帮前端的同学做了些大屏上的展示模块,就放在这里写写吧,手把手"需求->设计-> 实现",受众偏新手向. 为了直观便于理解, 直接把结 ...
- python环境安装(pyhon和pycharm)
一.python安装 在地址栏输入https://www.python.org/进入python官网, 点击windows后会出现各种可供下载的历史版本, 安装包下载后,双击运行 点击下一步 勾选下面 ...
- JavaScript的异步编程之Promise
Promise 一种更优的异步编程统一 方法,如果直接使用传统的回调函数去完成复杂操作就会形成回调深渊 // 回调深渊 $.get('/url1'() => { $.get('/url2'() ...
- PCA降维的原理及实现
PCA可以将数据从原来的向量空间映射到新的空间中.由于每次选择的都是方差最大的方向,所以往往经过前几个维度的划分后,之后的数据排列都非常紧密了, 我们可以舍弃这些维度从而实现降维 原理 内积 两个向量 ...
- R数据分析:扫盲贴,什么是多重插补
好多同学跑来问,用spss的时候使用多重插补的数据集,怎么选怎么用?是不是简单的选一个做分析?今天写写这个问题. 什么时候用多重插补 首先回顾下三种缺失机制或者叫缺失类型: 上面的内容之前写过,这儿就 ...
- 记一次HTTPClient模拟登录获取Cookie的开发历程
记一次HTTPClient模拟登录获取Cookie的开发历程 环境: springboot : 2.7 jdk: 1.8 httpClient : 4.5.13 设计方案 通过新建一个 ...
- 陪你去看 Lodash.js 起步
lodash 起步(数组) Lodash 是一个较为流行的 JavaScript 的实用工具库. 在开发过程中如果能熟练使用一些工具库提供的方法,有利于提高开发效率. 笔者从 API 上入手,不分析其 ...
- Dubbo-时间轮设计
前言 Dubbo源码阅读分享系列文章,欢迎大家关注点赞 SPI实现部分 Dubbo-SPI机制 Dubbo-Adaptive实现原理 Dubbo-Activate实现原理 Dubbo SPI-Wrap ...