比赛时间:2018-12-02
比赛赛制:ACM赛制(非3人队形式,个人赛)
比赛时长:4小时 (12:00——16:00)
(中午是不会让你去食堂的,饿的撑不住的童鞋可以自带一块巧克力啥的,当然你要是提前离开赛场也可以,不过这视为你比赛结束,友情提示:吃东西会让血糖升高从而影响思维哦!)
题目数量:10题左右(一般为10题)
题目类型:主要以基础数论、思维题为主
系统环境:WIN7 (正规比赛一般是ubuntu)
目前校OJ支持提交的编程语言:C、C++、Java
关于ACM赛制介绍
题目的提交状态:
1、Accepted. ——通过!(AC)
2、Wrong Answer.——答案错。(WA)
3、Runtime Error.——程序运行出错,意外终止等。(RE)
4、Time Limit Exceeded. ——超时。程序没在规定时间内出答案。(TLE)
5、Presentation Error. ——格式错。程序没按规定的格式输出答案。(PE)
6、Memory Limit Exceeded. ——超内存。程序没在规定空间内出答案。(MLE)
7、Compile Error. ——编译错。程序编译不过。(CE)
!注意:每次提交错误是有惩罚的,每交错一题罚时20分钟
竞赛结束后,参赛各队以解出问题的多少进行排名,若解出问题数相同,按照总用时的长短排名。总用时为每个解决了的问题所用时间之和。一个解决了的问题所用的时间是竞赛开始到提交被接受的时间加上该问题的罚时(每次提交通不过,罚时20分钟)。没有解决的问题不记时。例如:A、B两队都正确完成两道题目,其中A队提交这两题的时间分别是比赛开始后1:00和2:45,B队为1:20和2:00,但B队有一题提交了2次。这样A队的总用时为1:00+2:45=3:45而B队为1:20+2:00+0:20=3:40,所以B队以总用时少而获胜。
关于几种错误的解决方案
Wrong Answer:有很多人问我已经通过了所有人家给出的样例为什么还会WA,这个...人家给出的测试数据只不过是所有测试数据的一小部分;WA其实是比较难解决的一个问题,尤其是在个人赛中,因为自己思维的错误是很难被自己发现和纠正的,当发现自己提交的题目WA时,先回读题目,看自己是否误解题意,或是少考虑了题目中给定的情况,然后审查自己的代码,检查自己的代码结构,看是不是有的地方误写(比如:变量a写成了b,或者>你写成了>=),最后实在走投无路,修改无果,而你又不想放弃这道题,就给自己造数据,看你程序的输出和你所造出的数据结果是否一致。
Runtime Error:产生RE的原因多半是因为你的数组开小了,造成数组越界;或是使用指针不当(所以在比赛里多使用全局变量,尽量少用指针)。
Time Limit Exceeded:产生TLE主要有两大主要原因,在新生赛中因为不过分强调算法,因此可能是你缺少循环终止条件造成无限循环,或是多组输入时没有结束标志造成;在正式ACM比赛中,TLE的产生多半是因为用错算法或没有优化时间复杂度造成的,而这些都是后话,大家先不用考虑这些。
Presentation Error:一旦产生PE说明这道题你基本上已经过了,但是可惜你的输出格式没有严格按照人家的要求,这就需要你仔细审查人家要求的输出格式再修改你的代码。
Memory Limit Exceeded:一般是你数组开的太大了
Compile Error:这个错误嘛...你每次交代吗前在本地调试好,交上去一般不会出现这个错误,不过还有一种情况,就是你所使用的变量名与库函数名重名,比如:max、min、swap......这些都是库函数,定义自己的变量时尽量不要起这些名字。
新生赛的赛前准备
1.可以携带书籍、自己打印的纸质资料,比赛时可以查看这些资料,但是切记不能使用电子设备,比赛期间不能浏览其他网站,一经发现直接取消比赛资格。
2.觉得机房的键盘不舒服可以携带自己的键盘
3.关于编程环境,机房统一配备dev c++和codeblocks,没有vs,建议大家自己带个U盘里面放上自己变成的环境,赛前如有需要可以拷到电脑上
4.关于赛前环境调试:这点上课老师应该都教过,先看看你的编程环境能不能输出:“Hello World”,Java选手赛前查看虚拟机是否可用,不要等到比赛开始了,你才发现你的编程环境有问题。
5.比赛前期会有热身赛,热身赛成绩与正式比赛无关,做不做完全看你心情;等待之余可以和身边选手做简单交流,以缓解场面尴尬(我自己想的),但是比赛期间严禁与周围人交流。
关于“选题”
选择那一道题目入手这很关键,因为如果你选择了一道题开始做,除非这个题你做过或是这个题目很简单,那么这个题必然会花费你大量时间去编写和调试,所以下面教给大家几点选题技巧和策略:
1.首先你要明确,题目的难度不是按照题号依次递增的,也就是说第一题未必是简单题,而最后一道题也未必是难题。
2.每道题目的提交次数和通过次数是会显示给你的,根据这条信息可以判断出那些题容易做,那些题不容易做。
3.比赛刚开始的时候,你可以找一道自己“喜欢”的题目先开始入手(这里的喜欢,要看你平时的做题习惯),要是有思路能做出来这最好,发现没有思路,赶快去看别的题目,当连续几次找题无果时可以看大家的提交记录和题目的通过率来决定自己做那道题。
4.不要上来就死磕一道题,比如有人发现一道题自己WA了,改了几次还是WA,于是他火了,别的题也不看了,就死刚这一道题目,这是很愚蠢的做法,因为很有可能这是一道“坑题”,而题目中的坑点一时半会你的思维过度不过去,这时你可以先去找找别的题看,先换换脑子。
5.还有希望大家明确一点就是:不要抱着去AK的心态去比赛(信息学竞赛(NOI,NOIP,ACM等)中获得满分(即AC了所有题目)的神犇,可以被描述为AK了某个比赛),比赛中肯定会有根本不属于你当前实力范围内的题目,有题做不出来很正常(因为出题人为了防止选手AK肯定会设置难题),所以大家只管放平心态去打,表现出自己最好的实力即可。
关于比赛时间
5个小时的比赛时间是什么概念?相信大家是第一次体验这么长时间的比赛,5个小时对于你们来说十分充足,这和你们的高数考试不同,那个你们要考虑自己是否能答完卷子,这个5小时(因为存在你们无法涉猎的题目)对于你们很充足,但不代表不去珍惜时间,比赛时肯定会有一些选手会中途提前结束比赛,但是我不希望你们这样做,我晓得让大家在场上撑5个小时无论是对身体上还是心理上都是一种考验,但是我觉得坚持到比赛的最后一刻是对这场比赛的尊重,这是我曾经的一个队友告诉我的,当时我们在牛客打比赛,我觉得我已经过不了题了,就像提前放弃,他严肃的批评了我,如今他已经获得银牌光荣退役,希望大家秉承这种锲而不舍的精神。
“气球”
气球在ACM比赛中是一件很神圣的东西,你每通过一道题目就会在你的桌前挂一枚气球,这次新生赛也不例外,通过选手桌前的气球数量你可以知道这个人当前过了几个题。
榜单
点击排名可以看到自己和大家的过题数和排名,暂时的领先不代表最后的胜利,暂时的落后不代表最后的败北,只要你锲而不舍,直到比赛的最后一刻你仍有可能AC。
关于一些比赛注意和技巧
*提前把自己的模板、资料备齐
1.看清是多组输入、单组输入、还是输入t组
2.字符串输入时gets要慎用,什么时候用getchar(),什么时候不用
3.明确数据范围(int_max = 2147483647)见到以2开头的10位数用long 或 long long
4.关于精度问题double
结束语
写完这篇博的时候已经是1:19am,作为一个没有什么成就的菜逼心中不由浮现了一句话:“未了心愿,但求心安”,不管怎么样,我把大家作为自己的一种寄托,希望大家帮我完成自己曾经没有完成、没有做好的事情,仅此而已,加油大数据ACM,加油中北ACM!
最后放几张大佬照片膜拜一下orz!