竞赛经验

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

竞赛成绩=实力x经验

给大家解释一下这个公式。我有一个同学,可以算是神犇级别的了吧。他的竞赛实力相当牛b,单源、DP什么的伪代码能轻松默下来,红黑树、博弈论甚至FFT都能讲得头头是道,而且仅仅是一名初二学生!

去年他参加了noip普及组的比赛,结果出人意料——只有第一题分解质数(好像叫这个名吧...)得了10分,其他题全部爆0。事实上,他所有题都做了,但是他是抱着AK的心来的,所有的题他都是只过了样例就去做下一道了。你们也知道的,CCF的样例向来都很弱,尤其是去年...他竞赛实力弱吗?一点不弱,他是我们那个考场唯一一个文化之旅写了SPFA这个正确算法的人,但是,很可惜,由于某变量忘记置0导致爆0,考试结束的时候甚至连样例都没试。

第一题,一个逻辑错误;第二题,某情况下变量加不+1但是没考虑;第三题,强行按照自然数拆分的办法写的DFS;这些错误很小,但是这千里之堤就毁于小小的蚁穴了!他的竞赛实力很强,但是做题经验几乎为0,他几乎所有的时间都用在了研究算法上,很少做题。

我相信看我这篇文章的同学里也有类似,一段代码出来,大的框架没有问题,就是W A(1),后来抓耳挠腮找了几个小时才发现就是诸如变量初值,变量置零,递归形参、局部全局变量用错这样的小问题。实不相瞒,我直到现在依然如此。为什么?答案很简单,做题少了!做的题多了,错误出得多了,也就有经验了,熟能生巧吗!

拿到一道题,有经验的人会先按照人类处理该问题的思维去构造一个数学模型,然后去掉不必要的模拟,找可行优化,选用合适的数据结构和算法去实现,整个过程10多分钟就好了,绝对比你边写边想算法犯了逻辑错误去查几个小时要划算!

呵呵,说的偏了,但都是大实话。前言的最后送给大家几句话:

不要好高骛远,即使是大神的第一次也不会顺风顺水;

不要掉以轻心,即使是NOI也有忘记删调试输出、变量打反、没用文件这样错误的人;

不要垂头丧气,CLJ也是高三才拿到IOI冠军!我们还年轻...

考场瞬息万变,有不会做的题很正常。平心静气,先做简单的题,如果一道你有正确算法的题答案却不对,很可能是小错误,不要轻易放弃做别的题,那样可能会让你直到考试结束一道题也没做出来。

多做题,多思考,心要静!

注释:(1)oj上的测试结果。

WA :wrong answer 错误的答案

AC:Accepted答案正确;通过

TLE:Time Limit Exceed 超时

OLE:Output Limit Exceed超过输出限制

MLE:Memory Limit Exceed超内存

RE:Runtime Error运行时错误

PE:Presentation Error格式错误

CE:Compile Error无法编译

复赛考前准备:

草稿纸考试一般会发放,比较大,需要你带一、两支笔。应该可以带水,但是别喝多了,貌似上厕所比较麻烦。考试这几天就不要再学习心的东西了,时间不够,学也学不精,反而是浪费时间。建议自主复习一下旧的知识,比如字符串处理、快速排序这样的知识。头天晚上不要嗨到太晚(熬夜打DOTA、窜宿舍泡妹纸什么的...),早点睡。第二天大概6点左右就起床吧,剩下的时间根据需要调配,早饭、午饭大概8成饱就足够了,考试前记得上个大号- -哦对了,参赛证千万别丢了!建议快考试的时候再挂到脖子上(我们这有个仁兄把准考证弄丢了- -最后怎么解决的不知道),平时别拿出来显摆。还有就是一般住宿的学校会给你学校的平面图,考场在哪、食堂在哪、宿舍在哪一定研究明白了,别找不到地方就蛋疼了...

比赛提前30分钟进场,熟悉考场环境,找到自己座位及厕所位置,更改软件、系统为自己所喜欢的设置,如:取消桌面背景、更改屏幕分辨率、更改虚拟内存等。利用熟悉考场时间写下重要且易错内容,如:快速排序(Qsort)、文件操作命令等。试题解压密码会影响一个人的心情,一定要一次输对,注意大小写,不要边输入边检查,要对自己有自信。

禁止携带U 盘、MP3、计算器、手机等任何与存储、计算、通信有关的电子设备;禁止携带一切书籍和其他无关物品;一经发现按作弊处理。

还有,考前一定要看《骗分导论》!!!

常见问题解答:

P1:普及组的题目难度分配是怎样的?

A1:第一题是相对简单的题,但是一般会有操作起来较麻烦,考虑情况很多,数据类型很大这样的特点来考你。第二题是模拟,需要你抽象化问题,把问题的人工解决方法模拟出来,建立一个合适的数学模型,再用代码动手实验它。模拟的题一般比较麻烦,出错多很正常,甚至3个小时你不一定能解决一道模拟。

(对于建立数学模型,我要说说。比如,“在一个n米长的马路上种以m为间距种树,问能种几棵”,建立数学模型后实际就是在一个长度为n的线段上间距为m的点有多少。把路抽象为线段,把树抽象为点,这就是建立数学模型。很多问题都要转化成数学语言才能被计算机所模拟。)

第三题是一个跳板,一般是考不难的DP 图论搜索,需要有足够的算法知识和做题经验。

第四题相对比较难吧,会考一些像“单源最短路”、“SPFA”这样的比较“高级”的算法,所用到的数据结构也会比较“高级”,对于技巧、经验和心理都是一个考验。

对于各位新生来说,不妨放弃3、4两道题,第一题和第二题AC了也能有200分,骗骗分,拿一等问题不大了。P2:拿到试卷后该做些什么?

A2:不要着急下手做题,先浏览一下试题,对题目的难易有个把握,哪些题目自己能做出来心里要有数。先做相对简单的题,做题之前先在纸上写写画画,优化可不可行什么的都要试一下。

然后,看看哪些题目可以简单的骗分(比如没有答案就输出-1这样的),先把骗分程序写一个拷贝到对应文件夹下,等到考试最后你忙着做题就没时间写骗分程序了。可以骗分程序一般都是难题,所以...

再有,有时候你看到一个题后脑子里蹦出另外一个相似的题。这个时候切记生拉硬套把那道题的算法搬过来。因为那样的话会把你引导入一个误区,很多人进入误区就出不来了,最后导致写出的代码总是WA,那时候再改就来不及了。

不要一上来就抱着全部AC的心,那样会给你添加压力。摩天大厦也是一砖一瓦盖起来的,一步一步来!

P3:写出来的程序总是W A,怎么办?

A3:这是我去年犯的一个错误。就此给大家几点忠告:

1 不要写自己没有把握的算法。说起这个让我想起了丽洁姐写强联通分量的事...还是我那个同学吧,SPFA这个算法他不久前才学的,根本就没有学精,看到题以后也不想就开始写SPFA,然后各种调试调到比赛结束,交了一个连样例都时间过的程序上去了。其实他想过写一个搜索,但是他担心那样拿不到多少分(事实证明他想多了...shit 我永远的痛),就放弃搜索。一个不熟悉的算法,很多问题是你还没有发现到的,因为你不常写。所以现场出了问题是很麻烦的。

2 调试。第一种调试是编译器自带的监视变量,这里我就不一一说了。第一种有个缺点,有些数据你监视后会发现监视窗口的值和变量实际值一点也不搭边,各种奇怪的值...比如我的fpc2.4.0……第一种调试一般会伴随着单步运行,看看程序卡在哪里什么的。

第二种调试是调试输出,比如你发现答案不对,怀疑是某个在循环中值会发生改变的变量的问题,那你就在循环中加一个输出语句,用一个相对简单的测试数据,看看输出的该变量值和你人工模拟的值对不对。多加几个调试输出,可以清楚的发现问题发生在哪里。不过,等要交程序的时候一定要把调试输出等和程序无关的语句删掉或者注释掉,接着运行,看看答案对不对,然后保存(很重要),把源程序移动到题目文件夹下。

3 小问题解决。看一下你的程序中,变量置0了吗?变量置零语句的位置对不对?DFS的循环变量应该用局部变量你是不是用的全局变量?(我被这个坑过...调试了1个多小时)是不是有的极限情况没想到?是不是当达成某一个条件时就不用使计数变量+1或者-1了?是不是你的某个优化取余数mod错了?……等等,这些小问题最好的避免方法就是比赛前多做题!

4 样例是会骗人的!我会告诉你某同学的3个程序样例都过了但是都爆0了吗...样例有时候也是会骗人的,一定要自己多出几组数据测试!

相关文档
最新文档