某oier个人竞赛经验
数学奥林匹克之路小学数学竞赛经验分享

数学奥林匹克之路小学数学竞赛经验分享作为小学生,我曾经积极参加数学奥林匹克竞赛,在这个过程中收获了许多经验和教训。
今天,我将分享我的数学竞赛经验,希望能给其他小学生在数学奥林匹克之路上提供一些帮助和启示。
第一,培养对数学的兴趣是关键。
数学竞赛并不仅仅是为了获得好成绩,更重要的是提升自己对数学的兴趣和热爱。
只有对数学有浓厚的兴趣,才能坚持不懈地学习和参加竞赛。
因此,在备战数学竞赛时,我们要培养对数学的兴趣,可以通过解有趣的数学问题、参加数学俱乐部或者找到一位优秀的数学教师进行探讨等方式来激发兴趣。
第二,熟练掌握基础知识是基础。
对于小学生来说,数学竞赛的基础知识通常都是在课堂上学习的内容。
因此,在备战竞赛时,我们要将课本知识牢固掌握,并且进行广泛的练习。
通过反复做题,我们可以逐渐熟悉各种类型的题目,并提高解题的速度和准确度。
第三,注重解题方法和思维能力的培养。
数学竞赛不仅仅考察知识的掌握程度,更注重解题思路和方法的灵活运用。
因此,在备战竞赛时,我们既要搞清楚各种解题方法的原理和步骤,也要学会运用这些方法来解决实际问题。
同时,我们还需要培养灵活的思维能力,学会从不同的角度思考问题,找到问题的本质,从而能够快速有效地解决问题。
第四,保持良好的心态和积极的态度。
数学竞赛是一项长期的过程,充满了挑战和压力。
在备战竞赛时,我们要保持积极的态度,相信自己的能力,并且坚持不懈地努力。
遇到困难和挫折时,要保持乐观的心态,相信自己一定可以战胜困难,取得好的成绩。
第五,多参加模拟竞赛和交流活动。
在备战竞赛过程中,我们可以参加一些模拟竞赛和交流活动,这样既可以检验自己的水平,也可以通过与他人的交流和互动来学习和提高。
通过模拟竞赛,我们可以提前熟悉竞赛的环境和题型,增强自己的比赛经验,为正式竞赛做好准备。
总结起来,数学奥林匹克之路是一条充满挑战和机遇的道路。
在备战竞赛时,我们需要培养对数学的兴趣,扎实掌握基础知识,注重解题方法和思维能力的培养,保持良好的心态和积极的态度,并且多参加模拟竞赛和交流活动。
竞赛经验

竞赛成绩=实力x经验给大家解释一下这个公式。
我有一个同学,可以算是神犇级别的了吧。
他的竞赛实力相当牛b,单源、DP什么的伪代码能轻松默下来,红黑树、博弈论甚至FFT都能讲得头头是道,而且仅仅是一名初二学生!去年他参加了noip普及组的比赛,结果出人意料——只有第一题分解质数(好像叫这个名吧...)得了10分,其他题全部爆0。
事实上,他所有题都做了,但是他是抱着AK的心来的,所有的题他都是只过了样例就去做下一道了。
你们也知道的,CCF的样例向来都很弱,尤其是去年...他竞赛实力弱吗?一点不弱,他是我们那个考场唯一一个文化之旅写了SPFA这个正确算法的人,但是,很可惜,由于某变量忘记置0导致爆0,考试结束的时候甚至连样例都没试。
第一题,一个逻辑错误;第二题,某情况下变量加不+1但是没考虑;第三题,强行按照自然数拆分的办法写的DFS;这些错误很小,但是这千里之堤就毁于小小的蚁穴了!他的竞赛实力很强,但是做题经验几乎为0,他几乎所有的时间都用在了研究算法上,很少做题。
我相信看我这篇文章的同学里也有类似,一段代码出来,大的框架没有问题,就是W A(1),后来抓耳挠腮找了几个小时才发现就是诸如变量初值,变量置零,递归形参、局部全局变量用错这样的小问题。
实不相瞒,我直到现在依然如此。
为什么?答案很简单,做题少了!做的题多了,错误出得多了,也就有经验了,熟能生巧吗!拿到一道题,有经验的人会先按照人类处理该问题的思维去构造一个数学模型,然后去掉不必要的模拟,找可行优化,选用合适的数据结构和算法去实现,整个过程10多分钟就好了,绝对比你边写边想算法犯了逻辑错误去查几个小时要划算!呵呵,说的偏了,但都是大实话。
前言的最后送给大家几句话:不要好高骛远,即使是大神的第一次也不会顺风顺水;不要掉以轻心,即使是NOI也有忘记删调试输出、变量打反、没用文件这样错误的人;不要垂头丧气,CLJ也是高三才拿到IOI冠军!我们还年轻...考场瞬息万变,有不会做的题很正常。
NOI2020失败总结

NOI2020失败总结首先声明本人是高二老年OIer,代表OI界最低水平,NOI2020 Cu rk2选手。
没错你可以通过这条人肉我是谁不完全契合标题,以本人的碎碎念为主。
因为人总是喜欢遗忘,所以我会用这篇文章来警示自己。
预计会在noi2021结束后将这篇文章补全成为OI生涯回忆录并将其公开,希望到时候会以“一日看尽长安花”的心态将其补全,而不是像现在一样一副郁郁不得志的样子。
警告:本人语文功底奇差无比,这是一篇不合格的流水账,建议学业压力较大的同学不要阅读这篇文章浪费时间。
2020.6好不容易从颓废的在家生活改为在校生活。
在期中考试取得了rk200+的好成绩,然后成功再次投入到OI集训中。
和yfl,yxl,hy,ljl,lyn,szq度过了相对愉快的机房生活。
突然传出了lsy大神不去参加省选的消息,不由得感到遗憾甚至不理解,其实他完全可以不学OI直接省选然后noi创造奇迹啊。
但lsy的退役也为lyn大佬noi创造奇迹提供了条件之后便是省选,虽然发挥的也没有尽如人意,但是也取得了令个人较为满意的成绩,因为超越了一部分努力程度与智商远超过我的选手。
虽然顺利进入A队,但实际上省选过程中也反映了我极大的问题,d1t1花费了三个多小时调试,几乎是处于崩盘的边缘,严重体现了我技巧的生疏。
与此同时我d1t3爆搜写挂,丢失15分,虽然没有影响我进省队,但noi上的爆搜写挂直接将我送退役。
2020.7-2020.8省选结束后仍然继续着停课生活,但是机房里只剩下lyn,szq,clqq,感到十分惋惜。
那时候经常喜欢离开学校后继续去星巴克看电脑,但现在已经摒弃了这个习惯,因为这只是为我居家学习效率不高开脱。
比较值得一提的是当时参加了几天镇中介绍的acm比赛,和ruogu和ouuan巨佬进行了一定交流,也写了少量的soj的题目。
不过每次把比赛中比较困难的题目拿给lyn巨佬他都能很快想出答案,开始注意到他的超强实力。
szq巨佬也给了我相当大的帮助。
OI注意

这篇东西将永远置顶到我的OI生涯结束,我也会根据实际情况而做修改,希望也能帮助到其他的OIER。
一、竞赛过程step1:审题(30分钟左右)1、通读题目2、对问题在算法层次思考(注意不要漏掉题目中任何条件)3、估量题目实现难度(算法设计难度、编程复杂度)4、按照实现难度从小到大制定做题顺序先做把握大的题,什么是把握大的题?也就是思路完整,算法熟悉,易于调试的题。
(虽然题时由简单到难,但还是先读一遍较好,这样心里有底,才可以合理分配时间)step2:构思、编写代码1、设计算法、存储结构(程序模块)2、验证算法(证明或找反例)3、编写代码(对模块细化)编码细心与否,直接决定了下一步也就是调试的难度。
看着自己在纸上写出的程序框架(一定要有,很重要,可以帮你节约不少时间),小心地把代码写出来,参数尽量使用有意义的名称。
(变量的初始化一定要注意啊啊啊!)这一步不求快,但求稳,一定不要犯低级错误。
写完整个程序后不要急于编译,先把程序通读一遍(这一步有很多人都忽略掉,最好不要忽略,很有帮助的),确认无误后再开始编译调试。
step3:测试、调试1、设计数据,黑盒测试(数据要全面:划分等价类,每一类取典型小规模数据;设计边界数据;数组常数设小点,测试数组越界,但别忘了改回来;有规律大数据测试时空承受能力)2、调试模块化调试,先跳过过程函数看结果是否正确,若不正确锁定出错模块集中调试3、静态检查排错step4:检查1、程序名、大小写2、文件输入输出3、数组范围常量改回来没有,其他常量改了吗二、关于骗分方法0、简单贪心方法1、输出特定条件的解有时候一个问题条件复杂,我们想不出很好的解法,但是简化了某些条件以后,解很容易求出。
这样的题目,我们可以找到条件,使用多个if语句,根据简化条件输出问题的解。
这样的方法往往比简单贪心好些。
方法2、小规模数据搜索、大规模数据贪心例如readln(n);if n<100 then搜索else贪心方法3、搜索+贪心如果问题要求最优解,宽搜的时候可以对于给一步选择设个估价函数,只保留估价函数最优的几个进队;深搜时可以设置一个阀值,超过该阀值的就不进行搜索。
OI技巧

OI技巧书籍推荐:绿书+蓝书(青少年信息学奥林匹克竞赛培训教材系列)、算法导论、粉书(全国青少年信息学奥林匹克联赛培训教材)、黑书(算法艺术建议水平高的人看)、新编实用算法(建议水平高的人看)题库推荐:Usaco(强烈推荐,很经典的题库,Nocow有翻译)、Vijos (一个非常不错的中文题库)、Ural(水平有所提高了可以去做做,也有很多经典题)、Rqnoj(题目质量不是太好,不过也是一个题库)Codevs(一般)需要学的知识:40%来自于书本、40%来自于做题、20%来自于网上其它的资料。
1、学会总结,基本上每学完一个章节的东西就会拿多一段时间来进行总结。
总结的时候,先列出一个目录,把这一节学到的知识点写进去。
然后在下面分别拓展出这个知识点的原理、用途、编程流程、关键代码、优化、和其它同类算法的比较、复杂度估计、模块化代码、相应习题等等。
这样,可以很容易的把一个一个的知识点串在一起记住它。
(附录里有我的总结样例)2、要拿出一定的时间看书,书是人类进步的阶梯。
相信很多OIer都很喜欢做题,忽略了看书这个重要的环节。
其实只有阅览群书,才能学到更多的知识。
例如,某个算法你会N^3的算法,但是某本书上用N^2,甚至N的复杂度就给解决了。
如果不看书,如果考试正好出这个知识点,或许你就只能拿部分分了。
3、合理安排时间(特指放假或集训的时候)。
清晨7点到9点这段时间,是人们头脑最清醒的时间,这个时间段内,尽量不要去调程序,可以去做一些其它的事情,比如看书、总结等等。
而9点之后这段时间,建议去做题,这个时候一般花一个小时就可以编出在其它时间要花一个半小时才能编出的程序。
到了中午,吃完饭一定要睡觉,否则下午会很没精神,效率会很低的。
下午呢,一般就比较综合了,比较随意了,可以自己安排。
晚上,我一般都是继续调程序,因为想不出晚上干什么会高效一些。
4、学会适当的休息,不要长时间干同一件事情。
当你编程序进入了一个死角的时候,或许思维会很混乱,总想找出错误或优化这个算法,但是一片空白,很盲目。
NOIP选手竞赛心得

竞赛心得1.知识是基础,能力最重要初赛考的知识点,大纲如是说:计算机基本常识/基本操作和程序设计基本知识。
选择题考查的是知识,而填空题更加重视能力的考查。
例如写程序运行结果,大纲规定是必考的。
试卷中给出程序的并不复杂,语句的含义容易明白,但是悟性好的选手总是很快就能体会到程序的设计思路并得出正确的答案,机械模仿计算机硬算出结果的同学往往做的慢的多,而且容易失误。
2.各种题型的解题经验。
1)选择题一般它们是比较容易得分的,一共30分,不可错过!我建议大家找一本等级考试二级的书看,知识讲的系统一些。
选择题一般不超过二级的知识点。
另外,有DOS经验的选手可能会占一点便宜,因为有些题目可以根据经验判断。
2)填空这部分题目对数学要求要高一点,往往考查的是代数变形,数列(一般是考递推),也考查一些算法和数据结构知识。
建议大家多花一点时间做,尽量做对。
例题:1.数组A[30..100,20..100]以行优先的方式存储,每个元素占8个字节,且已知A[40 ,30]的地址为2000,则A[60,90]的地址为:_________________如果以列优先存储,则为:_________________考查了数据结构中数组存储方式。
2.设栈S的初始状态为空,现有6个元素组成的序列{1,3,5,7,9,11},对该序列在S 栈上依次进行如下操作(从序列中的1开始,出栈后不在进栈):进栈,出栈,进栈,进栈, 进栈,进栈,出栈,进栈,问出栈的元素序列是:_________,栈顶指针的值为______栈顶元素为:___________________考查了数据结构中的栈。
3.把中缀表达式写成后缀及前缀表达式(1) (P+Q)*(A-B)/((C+D)/(E-F))-G 后:_________________ 前:_________________(2) A-C*D+B/E*(D/A) 后:_________________ 前:_________________4.根据后缀表达式,写出前缀及中缀表达式ABC/DE+GH-/*+ 前:_________________ 中:_________________这两题实际上考查了数据结构中的表达式树5.用一个字节来表示整数,最高位用作符号位(1为正,0为负),其他位表示数值,(1)这样的表示法称为原码表示法,表示数的范围为:_________________(2)原码表示法,将出现_________________有两种表示(3)实际上计算机中是用补码表示数,其表示范围为:_________________考查了数的原码,补码表示。
数学小天才小学数学竞赛经验分享推荐
数学小天才小学数学竞赛经验分享推荐我是一个小学生,热爱数学,每年都参加数学竞赛。
通过多年的参赛经验,我总结出一些方法和技巧,希望能与大家分享。
在这篇文章中,我将介绍一些我在数学竞赛中的经验,并推荐一些有助于提高数学能力的资源。
首先,为了在数学竞赛中取得好成绩,良好的基础知识是至关重要的。
我们必须扎实掌握数学的基本概念、定理和公式。
要做到这一点,每天坚持做一些数学题是必不可少的。
可以选择一些像"小猿搜题"、"小猿口算"等手机应用,它们提供了大量的数学习题和测验,有助于巩固我们的知识。
其次,做好时间管理也是重要的。
比赛中时间非常紧张,我们必须在规定的时间内完成尽可能多的题目。
因此,在平时的练习中,要注意控制好每道题目花费的时间。
可以在做题时使用计时器,逐渐提高自己的速度。
另外,还要学会跳过一些复杂的题目,把精力集中在能够解决的问题上,这样有助于提高我们的答题效率。
此外,良好的解题思路和方法也是取得好成绩的关键。
在参加数学竞赛时,我们经常会遇到一些复杂的问题,需要我们运用创新的思维方式去解决。
在解题过程中,我们可以尝试运用逆向思维、归纳法、矩阵方法等不同的解题方法,不断拓宽自己的解题思路。
同时,多参加一些数学讲座和研讨会,学习一些高年级学生的解题方法,对提升解题能力非常有帮助。
最后,我想向大家推荐一些有助于提高数学能力的资源。
首先是数学竞赛的参考书籍,如《小天才数学竞赛习题集》、《小学数学竞赛辅导书》等。
这些书籍内容丰富,涵盖了各个年级的数学题目,对于我们提高解题能力非常有帮助。
另外,可以参加一些数学培训班或者线上课程,这些机构会提供专业的数学指导和辅导,帮助我们更好地理解数学知识。
总之,数学竞赛是一个锻炼我们数学能力的好机会,通过参加竞赛,我们不仅可以提高自己的数学水平,还可以培养解决问题的能力和创新思维。
希望我的经验和推荐对大家有所帮助,让我们一起努力成为数学小天才吧!参考书目:- 小天才数学竞赛习题集- 小学数学竞赛辅导书。
一个不成功的退役蒟蒻OIER的自白
一个不成功的退役蒟蒻OIER的自白2011年的夏季,记忆中的天气似乎没有那么炎热。
我唯一留有残存印象的,是一个小海龟;大人说,那对你很有帮助,启迪智慧,锻炼思维能力。
那一年,我刚刚结束三年级的学业。
我不知道这样的图形,我不知道那样的公式,我和一群高一届的“学长们”在一起。
听课很累,我几乎不明白任何的数学知识,仅仅是勉强学会了如何让那个用粗劣的线条绘成的小海龟动起来。
一个月过去了,我几乎每天像上课一样,没有什么假期。
初级班的结业考试,我得了一个特别的分数:111。
很奇怪,许多比我高一届的同学也没有达到这个成绩,老师说,我做的很好了。
因为我的坚持,我没有去参加第二个月的学习——因为我不想就这样出卖我的假期,我并没有觉得这个海龟带给我很多乐趣。
2014年的夏季,有些炎热——或许是因为世界杯的缘故。
当我还没有弄清楚任何关于我将要进入的初中的情况时,我莫名其妙地成为了一场无趣入学测试的第一。
于是我似乎顺理成章地进入了这个中学实际没有取消的,所谓最优秀的班级。
而在这之后我才明白,这个班级是为了信息学竞赛而生的。
这一年,是一切与信息学有关的东西在我视野中消失的第三个年头。
起步就是C++。
芜湖早在05年就开始从Pas转型为C,而关于这一切我还根本一窍不通。
事实上,我的大多数同窗都从小C那里过来,参加的是小学组的省赛。
唯独我,和为数不多的几个,连C++是什么也不知道。
老师告诉我们,十一月就是我们第一次竞赛的日子,现在只有两个月时间。
一大堆从前闻所未闻的东西,已经超过了我的接受范围。
而一张一张往年试卷,确实没有几题在我的能力之内。
但我过了初赛。
这是可笑的,滑稽的。
我几乎是背着那些奇怪的名词,碰到了一年简单的试卷,拿到了一个70多分。
我很高兴,以为自己得了许多窍门。
事实上还有一件事没有提——分数线刚刚40多分。
复赛,说实在的,我就是去玩一趟。
可是,一切胡乱而无畏的行动都会带来意想不到的后果。
我的复赛成绩是95分——一题满分都达不上。
编程竞赛经验分享与技巧
编程竞赛经验分享与技巧1. 引言1.1 概述编程竞赛作为一项高水平的技术竞争活动,受到越来越多程序员和计算机科学爱好者的关注与参与。
在这个快节奏的竞赛环境中,选手们利用自己的编程能力和解决问题的思维方式,面对各种挑战和难题。
本文旨在分享我个人参加编程竞赛的经验,并提供一些实用的技巧,在这个过程中使读者能够更好地应对比赛中遇到的各种情况。
1.2 文章结构本文将分为五个部分进行讨论:第一部分是引言部分,概括了整篇文章内容,并简单介绍了编程竞赛的基本背景和意义。
第二部分是编程竞赛经验分享,包括准备阶段、比赛策略以及解题思路。
我们将探讨如何在竞赛前做好准备工作,如何制定有效的比赛策略以及如何迅速解决问题。
第三部分是技巧与技术,我们将重点介绍算法优化、时间与空间复杂度分析以及调试与错误处理等方面的知识。
这些技巧和技术对于优化解题效率以及快速调试bug非常重要。
第四部分是团队合作与交流,我们将讨论在团队中如何分工合作、沟通与协作技巧以及解决冲突和团队建设等问题。
编程竞赛也可以是一个彼此互助、合作共赢的过程,所以团队合作非常重要。
最后,第五部分是结论,总结经验和收获,同时强调编程竞赛的持续学习与进步意义。
通过参加编程竞赛,我们不仅能够锻炼自己的技能,还能够不断提高自己并取得更好的成绩。
1.3 目的本文的目标是帮助读者更好地理解编程竞赛,并提供一些实用的经验分享和技巧。
通过阅读本文,读者将了解到如何在准备阶段进行有效的学习和准备,如何制定比赛策略以及如何优化算法以实现更好的解题效果。
此外,在团队合作方面也能够获得一些有益的启示和指导。
无论您是已经参加过编程竞赛或是初次接触,希望本文能够为您提供一些启发和帮助,使您在未来的编程竞赛中取得更好的成绩。
2. 编程竞赛经验分享:2.1 准备阶段:编程竞赛的准备阶段非常重要,这决定了你在比赛中的表现。
首先,熟悉比赛规则和格式是必需的。
不同类型的编程竞赛可能有不同的规则和评分标准,包括时间限制、提交格式等。
NOI及NOIP需要知道的与自己的心得
一、(搜索)双向广度搜索广度搜索虽然可以得到最优解,但是其空间消耗增长太快。
但如果从正反两个方向进行广度搜索,理想情况下可以减少二分之一的搜索量,从而提高搜索速度。
范例:有N个黑白棋子排成一派,中间任意两个位置有两个连续的空格。
每次空格可以与序列中的某两个棋子交换位置,且两子的次序不变。
要求出入长度为length的一个初始状态和一个目标状态,求出最少的转化步数。
问题分析:该题要求求出最少的转化步数,但如果直接使用广度搜索,很容易产生数据溢出。
但如果从初始状态和目标状态两个方向同时进行扩展,如果两棵解答树在某个节点第一次发生重合,则该节点所连接的两条路径所拼成的路径就是最优解。
对广度搜索算法的改进:1。
添加一张节点表,作为反向扩展表。
2。
在while循环体中在正向扩展代码后加入反向扩展代码,其扩展过程不能与正向过程共享一个for循环。
3。
在正向扩展出一个节点后,需在反向表中查找是否有重合节点。
反向扩展时与之相同。
对双向广度搜索算法的改进:略微修改一下控制结构,每次while循环时只扩展正反两个方向中节点数目较少的一个,可以使两边的发展速度保持一定的平衡,从而减少总扩展节点的个数,加快搜索速度。
二、(搜索)分支定界分支定界实际上是A*算法的一种雏形,其对于每个扩展出来的节点给出一个预期值,如果这个预期值不如当前已经搜索出来的结果好的话,则将这个节点(包括其子节点)从解答树中删去,从而达到加快搜索速度的目的。
范例:在一个商店中购物,设第I种商品的价格为Ci。
但商店提供一种折扣,即给出一组商品的组合,如果一次性购买了这一组商品,则可以享受较优惠的价格。
现在给出一张购买清单和商店所提供的折扣清单,要求利用这些折扣,使所付款最少。
问题分析:显然,折扣使用的顺序与最终结果无关,所以可以先将所有的折扣按折扣率从大到小排序,然后采用回溯法的控制结构,对每个折扣从其最大可能使用次数向零递减搜索,设A为以打完折扣后优惠的价格,C为当前未打折扣的商品零售价之和,则其预期值为A+a*C,其中a为下一个折扣的折扣率。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
概述相对于其他学科竞赛,信息学竞赛发展比较初步,竞争要小一些——具体体现在:如果能把水题的分拿稳了就基本接近一等线了。
特别是在四川省,这种显现比较明显,一等奖分数线会比苏浙一带低上一大截。
所以“稳”是一个非常重要的要素,不少接触信息学一年甚至几个月就拿下一等奖的传说,大抵也是由于考试时有仔细、稳定的良好习惯。
所以就目前来讲,一等奖并不难拿,但并不只是单纯地强调智力和知识就可以得到,需要强大的心理承受能力(即“淡定”)、丰富的编程经验、考试技巧来作后盾。
另外,根据笔者的观察,信息学竞赛的考察近年来有从“知识”到“能力”的偏移趋势。
以往的题往往会考一些特定的知识点(比如动态规划、图论之类),一般可以由模板算法套用变形解决。
但是今年的题基本没有考这些——除了某些不能拿全分的数据可以用动态规划解决。
这些题的解法事后看来或许会很简单,而且编程难度并不复杂(一般也就100行左右,手速快点的同学最多15分钟就可以敲完,调试经验丰富的同学二十几分钟就可以调试通过),但是某些点会比较巧妙,如果考试时不静下心去思考的话很难想到,如果没有大量的做题经验的话也容易卡住,有时一个得自平时经验的简单优化就可以救起一个复杂度(包括时空复杂度和编程复杂度)极高的程序。
拿郭怡辰同学为例,来说明经验积累以及考场应变的重要性。
为了求一段连续区间的和,他使用了比较高级的“树状数组”数据结构,但实际上只需要一个简单的数组就可以解决(即令S[i]为前i个数的和,那么第i个数到第j个数的和就是S[j]-S[i-1])。
前者是专门处理数字会动态改变的数组的求和算法,而后者则是处理静态的数组求和算法。
而这个经验任何一本书都不会专门去讲(如果你找到了那真是幸运),但是在刷题的过程中(包括阅读标程的过程)可以很容易得到。
如果找到了正确的方法(性价比最高的方法),会在考场上省下大量的脑力和时间。
日常训练模拟赛首先要强调一点,【注意】,这也是笔者吃了很多亏的一点,那就是实战训练的重要性!七中本部的同学经常都做套题训练,即使是在他们知识结构尚不完整的阶段,而本校因为组织的问题(原本没啥组织,希望几代之后能建立完善的信息学竞赛组织),并没有强调套题训练的重要性。
因为套题训练可以给你直接的考场经验,而这些是非常重要的:1、做题策略:怎么在第一眼就看出哪一道题是最简单的,应该按照什么顺序去做?一道题该花多少时间思考、多少时间去实现、多少时间去调试?你的方法是否能在以上时间内完美实现?在考场上你能“hold住”多复杂的代码——你能写多少行程序并且很小概率出错?(笔者的这一数据在学习过程中从70上升到150)在思考了以上问题之后,你应该选择哪个分值作为目标,是100%,%70,甚至30%?(千万不要小看30%的点,30分绝对不是小数目,特别是在你能用一个极其“白痴”的算法在极短时间内拿到它的时候)等等……竞赛考的不仅仅是知识,更需要一个合理的临场抢分策略。
2、急中生智:在做一道题的时候卡住是很正常的时候,特别是在考试的紧张氛围之下。
很多时候事后回想,发现题目的标答方法并不复杂,甚至我们可能本已经触及到其边缘。
所以我们务必要锻炼自己在紧张情境下突破问题关键点的能力,而这种能力只有在考试环境下才能得到最好的锻炼。
笔者就有多次脑袋几乎想爆(有时甚至全身发麻),然后灵光一现抓住问题关键豁然开朗的经历——这种经历下获得的快乐是极大的,并且一旦想通这道题就没有任何难度,一旦做出来就是几十上百分的差距,同时也为你省下了大量的时间。
3、保持淡定:这属于考试心态的一部分,但往往极其关键——以上两点都可以说是建立在“淡定”的基础之上的。
考场上你敢不敢放弃100%的得分点而去“苟且”那50%?能不能在时间过去大半而你并没有得多少分的情况下仍然淡定地思考?能不能在剩余时间比较鸡肋(比如40分钟)时放弃,返回去检查?能不能在时间比较紧张时仍然细心地读程序查错,写5、6个测试数据、甚至写一个对拍程序?——以上策略曾多次为笔者挽回惨痛的分数。
淡定才能稳定,才能细心,切记切记。
4、深入探究:平常我们说“刷题”,但考试中的题绝对不是刷出来的。
即使你没有在第一时间抓到题目的要点,你几十分钟的思考过程也绝对让你深入地了解了这道题。
看了标答之后,收获绝对不小。
另外耐心地阅读标程是一个很好的习惯,因为这可以让你学习到某些经典的简化程序的方法,逐渐形成自己的程序风格。
(笔者当年写一个链表的操作时,达到了十几行的长度,但是学习了网上的经典程序,改用数组模拟的“伪链表”时,只用了3、4行)5、学习交流:笔者没有这个福分,但是希望本校以后的OIer们,能够组织比较正式的模拟竞赛,并且在考后通过“评讲”等方式加快学习效率,碰撞思想。
童鞋们也可以尝试自己出模拟题,这也是一种不错的学习方式。
考前特别需要认真对待模拟赛,务必按照完整的规范来进行。
一位学长说过:“考前至少要停一周的课来练套题找感觉。
”今年看到许多同学边做边评测,这是不可取的,无法提高面对考试环境的能力。
刷题作为一个OIer,一定的题海战术是必要的。
这些可以帮你把知识运用到实战当中,并且获得许多书本上学不到的思路。
OI与其他竞赛的一个很大不同在于它的思维与实践都是必不可少的部分。
如果一个算法你没有完美地快速实践过,那么千万不要拿到考场上去使用——光是调试都会花去你大量的时间,并且不能保证正确(参加省选的同学尤其注意,笔者在上面吃过亏)。
OI的解题思路和我们“文化课”的学习一样是可以总结、把握的。
笔者切身体验,做了很多题之后,能够很快速地想出许多同难度题目的解法。
也就是把握思路——注意,虽然信息学注重实践,虽然理论上有多种方法可以达到目的,但是思路仍然尤为重要。
找到正确的解法,可以省去大量的时间。
目标是NOIP提高组难度的同学千万不要歧视水题,水题其实是很好的。
1、可以提高信心。
2、水题有时候水只是因为它不是多个知识点的组合而已,其本身还是一个比较精妙的系统。
(笔者的动态规划就是靠大量的水题堆积起来的,tyvj上有很多动态规划的水题,代码短得可爱O(∩_∩)O~)3、水题要保证正确率有时还是不容易的,可以提高你的细心程度。
4、水题意味着更少的思考时间,你有更多的时间去打代码,可以获得流畅的码字体验,对提升手速很有帮助。
5、某些题之所以是水题,是因为它思路简单,但往往实践起来很麻烦。
(比如“模拟”、“搜索”中都有很多这类题,对于提高你的“代码控制力”很有帮助)目测NOIP提高组接近50%的题都可以被视作水题,所以水题一定要拿稳分。
如果把水题100%地hold住了,一等奖就有很大希望了。
推荐几个题库(可能大家都有知道)【荐】USACO 源自美国的信息学题库。
USACO Training 是一套循序渐进的题组,按照顺序刷就行了。
(第一组可以跳过,基本属于普及组难度的。
没记错的话刷完第四组提高组一等奖的能力就基本有了。
之上是省选、国家队难度。
)特点是比较系统、合理,测试数据完全开放(现在很难找到这种题库了),很多高手都刷过,有不少前辈遗留的经验可供参考。
另外推荐NOCOW网站(网站名得名自对USACO的吐槽= =)。
其中的USACO Trainging部分有中文翻译、各种解法、标程。
网站是开放式的,只要注册账号就可以进行编辑,如果你有更好的方法也可以贴上去。
这个网站还有一个部分是竞赛所需的“知识树”,其中包含了直到IOI所需要的大部分知识,讲解也通俗易懂,配有各种语言的前辈遗言。
【荐】tyvj()中学生自创的OJ平台,其前身是Vijos(已倒闭)。
特点是版面使用起来很顺手,相比于大学题库来说比较基础(刚发展时被称作“水库”,现在好了些),但是比较符合提高组难度,也在逐步地公开一些题目的测试数据。
其许多的题目是原创的,不定期会举行网上模拟赛。
(竞赛前会大量举行,笔者平时就是通过这个渠道取得实战训练的。
另外,也可以申请举办竞赛。
)一个缺点是网速不怎么好,人多的时候挤不进去,网速卡的时候挤不进去。
由于是非盈利性质,所以资金会比较困难,如果哪位童鞋零花钱比较宽裕可以考虑为他们捐点金银。
【荐】Pku题库北大的题库。
特点是题量海了去了,非常全面(要找什么类型的题可以直接百度之,一般都会有博客写解答或标程),想要冲刺省选以上难度的同学推荐。
但是99%的题是英文的(笔者甚至看到过一篇文辞优美的情书式的自创题目……),自备金山词霸或者有道词典取词翻译即可。
不过大学的题库都有一个比较致命的弱点(也可以说是优点),就是运行结果极其简略,只有AC,而没有AC几个点的说法,所以做起来会很郁闷,不知道程序改了之后是不是多对了几个点。
调试起来比较麻烦,但是比较锻炼人。
(注意,瞄准提高组的同学可以不必去碰里面的许多题,usaco+tyvj足矣)其他的还有rqnj(也是针对提高组的),信息学初级题库(没记错的话,有一个普及组的水题题库,徐老可以给普及组充电),各个大学的OJ(其中有一些口碑非常好的,不过笔者没有用过,各位可以自行查阅)。
最后再说一句:刷题要认真刷,善于总结,不要一味追求AC率。
看书记得有位前辈提醒过:“一定要花时间看书!”作为一个OIer,光刷题是不成的,应该吃透了书本中的许多精髓,然后用刷题来巩固与补充。
推荐的书:1、徐老那里有一本粉红色的书,详细地罗列与讲解了所有提高组需要的知识结构,详细看懂了是绝对必要的。
不过要注意之前强调过的信息学竞赛考察趋势,要理解算法,才能变通。
2、徐老的紫色题集:里面除了图论部分的题目,大部分专题是比较简单的(但不可小看,独立解决仍然会收获颇丰),可以作为一本“离线题库”使用,对于弥补大家的上机时间比较有帮助。
笔者曾经手写了其中许多题目的程序,然后再上机验证。
3、“黑书”——《算法艺术与信息学竞赛》。
这本书比较难懂(有人说是写给作者自己看的……),但确实是一本很好的书。
阅读此书你可以看到信息学当中极具艺术的一方面,其中某些精妙的思想非常美丽。
如果你有天赋能将此书融会贯通,那么估计你基本上就能虐IOI的题了……但需要注意其中大部分内容对于NOIP提高组帮助不大,省选以下不要花太多时间去研读。
(注:作者认为本书的一个目的提供一个“目录”。
读黑书的时候需要配合网络查找大量相关资料。
)4、黑书的配套教材(没有纸质版,会把pdf文件附上,建议大家打印全本……为了维护作者版权,请勿上传至网络)这本书比黑书实用很多,讲解了直到IOI 所需要的大部分知识,比较好懂。
缺点是有些图没印好,符号有些错位。
5、徐老那里有很多NOI导刊,每一期往往都会有几个专题,比较有实战价值,建议阅读。
6、其他许多网络上搜集的专题资料会附上。
一个需要注意的要点是:千万不要忽略“枚举、贪心、分治”等看似简单的“方法”。
确切地说,这些已经不是方法了,而是一种应该融入OIer内心的思维方式。