ACM竞赛规则与常见.docx
《ACM竞赛规则与常见.docx》由会员分享,可在线阅读,更多相关《ACM竞赛规则与常见.docx(11页珍藏版)》请在冰豆网上搜索。
ACM竞赛规则与常见
ACM/ICPC竞赛常见问题解答参赛对象
1、凡广州大学在校本专科生均可报名参加。
年级、专业不限。
鼓励低年级同学及女同学参加。
2、本次比赛学生以个人身份参加,每人独立参赛。
3、参赛同学应保证自己身份等资料的真实性。
竞赛细则
1、选手在参赛时携带个人证件。
2、竞赛以上机为比赛方式。
3、竞赛中至少命题6题,至多命题9题,上机比赛时间为4个小时,中间不休息。
4、参赛选手可以携带诸如书籍、字典、手册、程序清单等文字性参考资料。
5、参赛选手不能携带任何可用计算机处理的软件或数据(不允许任何私人携带的磁盘或计算器)。
6、参赛选手不能携带任何类型的通讯工具,包括无线电接收器、移动电话等。
7、选手未解决全部题目不得提前离场
8、竞赛的预定时间为4小时,但当竞赛进行一定时间后,竞赛裁判可以因为出现不可预见的事件而调整比赛时间长度,一旦比赛时间长度发生改变,将会以及时并且统一的方式通告所有参赛选手。
9、当参赛选手出现妨碍比赛正常进行的行为时,诸如擅自移动赛场中的设备,XX修改比赛软硬件,干扰他人比赛等,都将会被竞赛裁判剥夺参赛资格。
竞赛评分
1、正确解答中等数量以上试题的队伍会根据解题数目进行排名,解题数在中等数量以下的队伍只发布解题数量,不进行排名。
2、在进行排名时,如果多人解题数量相同,则根据总用时加上惩罚时间进行排名。
总用时和惩罚时间由每道解答正确的试题的用时之和加上惩罚时间之和而成。
每道试题用时将从竞赛开始到试题解答被判定为正确为止,期间每一次错误的运行将被加罚20分钟时间。
未正确解答的试题不记时,对应的错误运行也不计入惩罚时间。
3、选手在比赛期间能看到排名表和他人的成绩、解决的问题。
4、比赛中每一道题目对应一种颜色的气球(颜色的对应在试题中注明)。
在选手正确解答出某道题目后,工作人员将会把对应颜色的气球插到此同学的位置旁。
5、比赛结束前一个小时内,将不再为正确的解答摆放气球。
6、请注意竞赛裁判决定解答提交是否正确需要一定的时间。
竞赛评奖
1、为鼓励优秀同学,本次比赛设立若干奖项,获奖者将获得奖品及证书。
2、比赛设一等奖,人数四人;二等奖,人数六人,三等奖,人数十人。
同时设优胜奖20人。
3、所有获奖者自动成为新一届广州大学ACM竞赛代表队的预备队员,参加学校组织的进一步培训。
比赛组织Q(Question):
我能否携带字典、书籍和程序清单?
A(Answer):
可以,建议至少携带一本英文字典。
Q:
我能否携带光盘、软盘等存储介质?
A:
不能。
Q:
我能否携带计算器?
A:
不能。
Q:
是否提供模拟题?
A:
本次比赛不直接提供模拟题,选手可以直接到广州大学ACM站点的在线测试(GZOJ)中作题(http:
//
172.2
2.2
7.1)。
站点上的题目与本次比赛在风格、判决方式等方面基本类似,但难度上更高一些。
Q:
如果我在比赛过程中对试题有疑问怎么办?
A:
可以通过在线的对话系统询问裁判。
但请使用英语。
Q:
我问裁判的问题,别人能够看到么?
A:
一般看不到,当裁判认为这个问题有共性时,可以发布给大家。
Q:
在比赛过程中,我能否看到自己的成绩?
A:
可以看到自己以前的所有提交过程,包括每次提交的结论和提交时间。
但不能看到自己在整个赛场的排名。
Q:
在比赛过程中,我能否看到别人的成绩?
A:
除了根据气球判断别人解答出的问题外,不能直接看到排名表和别人成绩。
Q:
我提交一个解答后,多长时间能够反馈回判决?
A:
一般可以马上得出结果。
如果超过5分钟仍未有结论,请速与工作人员联系。
Q:
如果我的机器出问题怎么办?
A:
请速与工作人员联系。
请尽量在测试环境阶段发现问题。
在正式比赛期间由于机器问题造成的比赛时间延误,一般不追加时间。
Q:
在测试环境过程中,我应该干什么?
A:
在此阶段,将出一道简单的热身题目,题目的解答与否与比赛成绩没有任何关系。
选手应该在此期间熟悉所用机器的环境,检查软硬件是否有问题,并编制程序进行提交,熟悉提交系统的使用方法。
可以故意编制一些含有错误的程序,熟悉系统对于错误提交的反馈结果。
Q:
提交的解答由谁来判决?
A:
本次比赛的提交程序由程序自动判决。
在特殊情况下,由裁判判决。
Q:
提交的是程序本身还是可执行文件?
A:
源代码。
Q:
我是否可以将程序放到多个文件中?
A:
不可以。
Q:
是否会因为我的程序书写规范而获得奖励,或者因为程序不易读而遭到惩罚?
A:
不会。
一切以程序的执行结果为标准,除非特殊情况,否则裁判不会留意你的程序的。
Q:
试题对算法有要求么?
A:
没有,只要在限制时间内能够正确解答出来就可以。
Q:
我的程序的运行时间远远低于要求,这是否作为一个衡量标准?
A:
不会。
只要在规定的时间内运行正确,都将同样对待。
Q:
我已经在纸面上写出了某道题的答案,但由于时间原因没有在计算机上运行,能否给一定的分数?
A:
不能。
本比赛完全按照在计算机上的程序与运行决定成绩。
关于试题Q:
这个竞赛都考什么样的试题?
A:
本竞赛是关于程序设计方面的竞赛,因此试题类型都是编制程序,解决一个问题。
具体样例可以参见http:
//
172.2
2.2
7.1。
Q:
一共出几道题?
A:
最多9道,最少6道不定。
Q:
题目的难度如何?
A:
一般来说,如果在GZOJ上能够作出10道左右的题目,那么在本次比赛中应该至少作出两道题。
Q:
我一定要按照题目的次序作题么?
A:
不。
选手可以自由决定作题的次序。
试卷中的题目次序与试题难度无关。
Q:
我是否要解决所有问题?
A:
不必。
如果你能解决所有问题,那么可以保证获得金奖了。
Q:
要想获得一等奖,需要解决多少道题目?
A:
按照我们的估计,大概需要解决三分之二以上的题目。
Q:
我只会用C语言,是否可以参赛?
A:
可以,本次竞赛允许使用C语言。
国际上的ACM竞赛只允许使用C/C++和Java语言,因此如果你想参加广州大学ACM代表队,还要学习和使用这两种语言,尤其是C++。
Q:
在判决时使用的数据是否和试题中的一样?
A:
不一样。
判决时使用的数据可以是符合题目要求的各种数据。
数据量也可能很大。
Q:
我需要测试输入数据是否满足输入条件么?
A:
不需要。
可以保证输入数据都是符合题目中的要求的。
Q:
数据从那里输入?
输出到哪里?
A:
本次比赛的输入输出都是标准输入和标准输出。
例如在C/C++中可以直接使用cin,cout。
Q:
我在本地如何进行测试?
A:
将你的程序编译成可执行文件后(假设为prog.exe),将输入数据写在一个文件中(假设为in.txt)。
在命令行模式下,使用文件重定向来测试。
例如:
Prog也可以将结果写到另一个文件中,如progout.txt。
这种方式可以读取到文件结束符。
Q:
输入输出是否有一定要求?
A:
是的。
试题中对于输入输出都有严格说明,必须按照这个标准进行。
否则程序将不能得到正确结果。
Q:
CompilerError(编译错)是什么含义?
A:
这说明你的程序在服务器上出现编译错误,请查看详细信息确定错误的具体内容。
并请检查提交时是否选择了正确的语言。
Q:
RuntimeError(运行错)是什么含义?
A:
这说明你的程序在运行期间出现了某些错误。
常见的错误包括:
除零错误,数组越界,指针指向的单元不存在等。
还有一种可能就是在C/C++中,main函数的返回值不是
0。
Q:
TimeOver(超时)是什么含义?
A:
每一个题目都有一个最大运行时间的要求(在试题中明确标出),如果你的程序的运行时间超过这个要求,将被强制停止,并返回这个错误。
这种情况可能是由于程序中错误地出现了死循环,也可能是因为你的算法不够优化,这就需要重新设计算法和数据结构。
Q:
OutputTooMuch(输出过多)是什么含义?
A:
在系统中,为管理资源,对每个程序的输出数量是有限制的。
出现这种情况,一般都是因为程序中错误地出现了死循环,不断输出一些错误结果。
Q:
WrongAnswer(结果错)是什么含义?
A:
这是一种最常见的错误,也就是说明你的程序的计算出的结果不对。
如果你在本地测试正确,则要注意到判决时所使用的可能是各种符合要求的数据,需要考虑你的算法是否考虑到了所有情况。
Q:
PresentationError(格式错)是什么含义?
A:
如果输出中只有空格和回车与答案不一样,则返回这个错误。
在试题中均有严格说明,请仔细察看题目,尤其是空行。
这个错误一般标志算法的基本方案已经正确了,离正确解答只有一步之遥。
语言细节Q:
比赛中所使用的编译器是什么?
A:
在服务器上使用。
在本地,由于条件限制,使用。
Q:
在C/C++中,main函数应该如何写?
A:
应该写成:
intmain(){…return0;}。
请特别注意main函数的类型是整型,并且返回值为
0。
否则会导致RuntimeError。
Q:
我的程序在VC中编译正确,提交后出现CompilerError,具体信息是:
namelookupof`j'changedfornewISO`for'scoping这是什么原因?
A:
这是由于VC中存在与C++标准不兼容的部分,一般是如下类型的程序段引起的:
for(intj=0;j<10;j++){…}j=10;也就是说,在C++标准里,这种方式定义的变量j的作用域限制在for循环内部。
如果要在for循环外继续使用这个变量,请将其定义提前到循环前。
即如下例:
intj;for(j=0;j<10;j++){…}j=10;Q:
C/C++中,如下的错误信息是什么含义?
the`gets'functionisdangerousandshouldnotbeusedA:
gets函数作为一个危险的函数,可以造成系统的漏洞,因此不建议使用。
如果要读取一行字符,可以使用cin.getline();Q:
我是否可以使用VC中的MFC类库?
A:
不可以。
作为替代方案,可以使用STL中的容器等工具。
Q:
我是否可以使用C++中的STL?
A:
可以。
但是要注意VC中的STL存在一些与GNU编译器不一致的部分。
最好使用那些已经被证明正确的部分。
Q:
我是否可以使用动态内存?
A:
可以。
但是这样的程序不好调试,因此除非必要,建议避免使用。
一般情况下可以直接申请一个足够大的数组等。