论坛: 编程破解 标题: 【转贴】备战竞赛的要点,初学编程的也可以看看,不错。 复制本贴地址    
作者: Greentea [napolun]    版主   登录
    主要是我快参加竞赛了,贴出写前辈的经验,都来看看。

复赛

想一想,这些问题本身也许就可以引起你的思考。选出你认为最重要的,你又最差的方面集中训练。
1.你参加过复赛吗?
2.你做过以前的竞赛题吗?(没有做过就在本站下载一份去做嘛!)
3.你知道复赛如何评分吗?
4.在算法十分熟悉的情况下,你平均输入100行代码需要多少时间?
5.你对那类题目最有把握?
6.你对那类题目最头痛?
7.程序编完后,调试成功需要的时间平均是编程时间的几分之几?
8.你满以为正确的程序,结果测试下来有错误的情况有多少?
9.你满以为正确的程序,结果测试下来几乎得0分的情况有多少?
10.你看完题目(包括验证样例数据)的平均时间是多少?
11.从看完题目到脑子里浮现出第一个算法的平均时间是多少?
12.从看完题目到最后决定采用哪种算法的平均时间是多少?
13.从决定算法到开始编码,你会先在做准备工作(eg.写伪代码)吗?需要多少时间?
14.在实现算法的时候突然发现算法是错误的,这种情况有多少?
15.程序编完后测试一些数据后发现算法是错误的,这种情况有多少?
16.程序写着写着写不下去了,因为觉得代码还需要写那么那么多...这种情况有多少?
17.程序写着写着写不下去了,因为不知道下一步该写什么了,这种情况有多少?
18.程序写着写着写不下去了,因为刚刚写过的代码突然看不懂了,这种情况有多少?
19.程序写完了,运行失败,你先静态查错,还是直接调试?
20.调试通一个100行代码的程序,你用的时间平均是多少?
21.调试了一段时间,仍然通不过,不知道该怎么办,这种情况有多少?
22.调试了半天,终于找到错误了。但竟发现是笔误!这种情况是多少?
23.对于竞赛题,你有把握同时通过的程序有几分之几?这种“把握”通常是正确的吗?
24.你测试程序吗?是否只是使用样例数据?
25.测试时死机。这种情况有多少?
26.测试大数据时才发现你的程序效率存在严重问题,这种情况有多少?
27.测试大数据时才发现你的程序空间问题没有解决好,这种情况有多少?
28.测试一个数据失败,调试通以后你是否进行回归测试?
29.一般的题目你会花多少时间测试?
30.做一道简单的复赛题目,你一般需要多少时间?
31.做一道中等难度的复赛题目,你一般需要多少时间?
32.做一道困难的复赛题目,你一般需要多少时间?
33.平时做题你计时吗?
34.想好算法以后,你能较为准确的估计你将花的时间吗?
35.看完题目以后,你选择对于你来说最简单的题目吗?如果是,选择正确(的确比其他题目容易得分)
  的时候多吗?
36.对于不会做的题目,你能够想一个方法拿部分分吗?
37.你设计的测试数据和标准测试数据是否比较接近(指考查的方面,不是数据本身)?


备战复赛
1.知识体系回顾,多做经典题目练手
算法方面,可能考到的是:搜索(回溯就可以了),动态规划(几乎是必考),贪心,递推(小心真的考到哦),递归, 简单的图论算法(dijkstra, MST, euler路等)数据结构反而考得不多。熟悉字符串的操作和排序算法就差不多了。记住:信息学不是看会的,是练会的。一定要多看多想多练。

2.养成编码和调试习惯
去年复赛的时候,我身边的那个选手打键盘的声音特别大,我忍了一段时间以后实在受不了,就转过头去看他。那时,我正在写第一题,他已经写完开始调试了。我暗想,可能这是个极有竞争力的选手吧。当我完成第三题是不由自主的又去看他,竟发现他还在调试第一题,结果...

复赛考查的算法并不困难,选手在实现上的问题往往还要大一些。因此建议大家(我一直是这样做的):

一,充分利用草稿纸,不要对自己的“心算能力”太自信了。编程熟练的同学喜欢“一气呵成”,拿到题目就开始编码。我认为这样不好。做信息学竞赛竞赛题的思维过程是丰富而曲折多变的,考虑问题必须全面。仅凭一时的“感觉”来编程往往是漏洞百出。初学者常常忘记做一些初始化工作(远不止变量赋初值这种最简单的),即使有经验的同学也难免因一时疏忽写出几个错误的语句。最要命的是“第一感觉”的算法是错误的或者效率太低,而程序编了大半才发现...做一些复杂的题目(以前复赛的题目其实没有特别复杂的,但今后可说不准),大多数人多会在一分心的时候突然断了思路,不知道下一步该写什么了。

二,编码采取自顶向下,逐步求精的方法,调试时采用输出中间结果的办法及时找出错误的地方。可以这么说,思路越清晰,对自己程序的算法和编码越了解,调试也会越顺利(一定不要忽视)

3.多做套题
做单个题目和套题感觉并不一样。做套题要涉及到时间分配和做题顺序等。这些东西同样十分重要。


比赛经验 -- 最大限度的发挥自己的水平
我初三第一次参加信息学竞赛,复赛只得了40多分。我完全有能力得更高的分的,但由于经验不足就...
所以呢,我实在不忍心看到大家步我的后尘,因此在这里我就随便写一点自己的体会,希望对初学者
有点帮助。

1.认真审题
审题对于信息学竞赛来说尤其重要。同一个题目如果数据限制差异大的话可能难度差异也很不同。例如:输入A,B,输出A+B的值。如果题目说0<=A,B<=10000,这道题目无疑是一道很简单的题目,但如果题目说0<=A,B<=10^100则显然就要用到高精度数的处理了。从某种意义上说,数据限制也暗示了你可能的算法。数据小,
也许是搜索派上用场的时候,数据大了,可能只能考虑动态规划,数学方法等高效的算法了。

2.正确的估计题目的难度和自己的水平

初学者是一般不可能做出所有的题目的,应该选一些自己平时最熟悉和有把握的题,一定要做对。记住,信息学竞赛最容易出现“一失足成千古恨”的情况。自己熟悉的题目要加强编程熟练度,准确度,测试和调试能力,把自己有能力拿到的分拿稳。

初学者常常“意气用事(借用一下这个词吧)”,拿到一道看起来很“爽”的题目就开始做了,其实这样不好。记得NOI99第二试的时候许多选手一开始就做第三题 - 模拟题,看起来简单,其实要做好并不容易,所以 - 不少人用了4小时都没有做出来,只好...我虽然先做的第一题,但做完后也是去做第三题,做了3个小时却因为粗心...所以说,必须在平时训练一下对题目的规模,难点,编程调试复杂度等方面的估计,还要注意自己擅长哪方面,编程速度和准确度以及调试能力如何,结合自己对题目的估计,方能正确的选择题目和安排时间。

3.重视测试

能够做的题目常常得不了满分,这也属于发挥欠佳。但其原因不是自我估计不准,而是考虑问题不全面。一道自己有把握,有信心做好的题目一定要花大力气保证其正确性。记得NOI99第一试,我第二题“几乎”编正确了的,却因为初始化有误,我测试的数据可以通过,但评分时用的数据无一通过:( 。这是因为我的测试数据太特殊,没有反映出程序的缺陷。明白了吗?想想我的失败,大家一定要重视测试啊!

4.评分的唯一标准是测试数据

我不是鼓励大家“投机取巧”,我的意思是,一道困难的题目如果无法下手,在时间允许的情况下一定要写一个能解一些特殊情况的程序。例如去年分区联赛《旅行家的预算》一题,无解的数据和没有加油站的数据各一个,难道对于这两个情况的程序你还不会编吗?得一些分算一些嘛。还有“导弹追踪”一题有一个数据是升序排列的,难道你不知道这种情况是一次只能打一个吗?很多最优化题目,不要一个字都不写,根据你的“直觉”算法(例如贪心),虽然得不了满分,也能得一定的分数。反正又不是写解题报告,得多少算多少。

4.不怕一万,就怕万一

和编程序没有什么关系啦,我是提醒大家要多存盘什么的,最好保留一些不同版本(例如算法不同)的程序,便于选择修改。不要不当回事,小心点总是好事。我上次就因为...第二题编了两次(好在只多花了10分钟)

原著:http://oibh.ioiforum.org/newcomer/fenqu3.HTM

地主 发表时间: 04-08-28 21:14

回复: lqfrla [lqfrla]   论坛用户   登录


B1层 发表时间: 04-08-30 17:01

回复: qiezic [qiezic]      登录


B2层 发表时间: 04-08-31 12:59

回复: sniper167 [sniper167]   论坛用户   登录
这个不错。。。

B3层 发表时间: 04-09-01 20:51

论坛: 编程破解

20CN网络安全小组版权所有
Copyright © 2000-2010 20CN Security Group. All Rights Reserved.
论坛程序编写:NetDemon

粤ICP备05087286号