文档库 最新最全的文档下载
当前位置:文档库 › ACMICPC竞赛常见问题解答

ACMICPC竞赛常见问题解答

比赛组织
Q(Question):我能否携带字典、书籍和程序清单?

A(Answer):可以,建议至少携带一本英文字典。

Q:我能否携带光盘、软盘等存储介质?

A:不能。

Q:我能否携带计算器?

A:不能。

Q:是否提供模拟题?

A:本次比赛不直接提供模拟题,选手可以直接到吉林大学ACM站点的在线测试(JOJ)中作题(https://www.wendangku.net/doc/355483934.html,)。站点上的题目与本次比赛在风格、判决方式等方面基本类似,但难度上更高一些。

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:本竞赛是关于程序设计方面的竞赛,因此试题类型都是编制程序,解决一个问题。具体样例可以参见https://www.wendangku.net/doc/355483934.html,。

Q:题目的难度如何?

A:一般来说,如果在JOJ上能够作出50道左右的题目,那么在本次比赛中应该至少作出两道题。

Q:我一定要按照题目的次序作题么?

A:不。选手可以自由决定作题的次序。试卷中的题目次序与试题难度无关。

Q:我是否要解决所有问题?

A:不必。如果你能解决所有问题,那么可以保证获得金奖了。

Q:要想获得一等奖,需要解决多少道题目?

A:按照我们的估计,大概需要解决三分之二以上的题目。

Q:我只会用PASCAL语言,是否可以参赛?

A:可以,本次竞赛允许使用PASCAL语言。但国际上的ACM竞赛只允许使用C/C++和Java语言,因此如果你想参加吉林大学ACM代表队,还要学习和使用这两种语言,尤其是C++。

Q:在判决时使用的数据是否和试题中的一样?

A:不一样。判决时使用的数据可以是符合题目要求的各种数据。数据量也可能很大。

Q:我需要测试输入数据是否满足输入条件么?

A:不需要。可以保证输入数据都是符合题目中的要求的。

Q:数据从那里输入?输出到哪里?

A:本次比赛的输入输出都是标准输入和标准输出。例如在C/C++中可以直接使用cin, cout。

Q:我在本地如何进行测试?

A:将你的程序编译成可执行文件后(假设为prog.exe),将输入数据写在一个文件中(假设为in.txt)。在命令行模式下,使用文件重定向来测试。例如:

Prog < in.txt。也可以将结果写到另一个文件中,如prog < in.txt > out.txt。这种方式可以读取到文件结束符。

Q:输入输出是否有一定要求?

A:是的。试题中对于输入输出都有严格说明,必须按照这个标准进行。否则程序将不能得到正确结果。

Q:Compiler Error(编译错)是什么含义?

A:这说明你的程序在服务器上出现编译错误,请查看详细信息确定错误的具体内容。并请检查提交时是否选择了正确的语言。

Q:Runtime Error(运行错)是什么含义?

A:这说明你的程序在运行期间出现了某些错误。常见的错误包括:除零错误,数组越界,指针指向的单元不存在等。还有一种可能就是在C/C++中,main函数的返回值不是0。

Q:Time Over(超时)是什么含义?

A:每一个题目都有一个最大运行时间的要求(在试题中明确标出),如果你的程序的运行时间超过这个要求,将被强制停止,并返回这个错误。这种情况可能是

由于程序中错误地出现了死循环,也可能是因为你的算法不够优化,这就需要重新设计算法和数据结构。

Q:Output Too Much(输出过多)是什么含义?

A:在系统中,为管理资源,对每个程序的输出数量是有限制的。出现这种情况,一般都是因为程序中错误地出现了死循环,不断输出一些错误结果。

Q:Wrong Answer(结果错)是什么含义?

A:这是一种最常见的错误,也就是说明你的程序的计算出的结果不对。如果你在本地测试正确,则要注意到判决时所使用的可能是各种符合要求的数据,需要考虑你的算法是否考虑到了所有情况。

Q:Presentation Error(格式错)是什么含义?

A:如果输出中只有空格和回车与答案不一样,则返回这个错误。在试题中均有严格说明,请仔细察看题目,尤其是空行。这个错误一般标志算法的基本方案已经正确了,离正确解答只有一步之遥。

语言细节
Q:比赛中所使用的编译器是什么?

A:在服务器上使用g++、fpc。在本地,由于条件限制,使用vc等。

Q:在C/C++中,main函数应该如何写?

A:应该写成: int main(){… return 0;}。请特别注意main函数的类型是整型,并且返回值为0。否则会导致Runtime Error。

Q:我的程序在VC中编译正确,提交后出现Compiler Error,具体信息是:

name lookup of `j' changed for new ISO `for' scoping

这是什么原因?

A:这是由于VC中存在与C++标准不兼容的部分,一般是如下类型的程序段引起的:for (int j=0; j<10; j++){…} j=10;

也就是说,在C++标准里,这种方式定义的变量j的作用域限制在for循环内部。如果要在for循环外继续使用这个变量,请将其定义提前到循环前。即如下例:

int j;

for (j=0; j<10; j++){…}

j=10;

Q:C/C++中,如下的错误信息是什么含义?

the `gets' function is dangerous and should not be used

A:gets函数作为一个危险的函数,可以造成系统的漏洞,因此不建议使用。如果要读取一行字符,可以使用cin.getline();

Q:我是否可以使用VC中的MFC类库?

A:不可以。作为替代方案,可以使用STL中的容器等工具。

Q:我是否可以使用C++中的STL?

A:可以。但是要注意VC中的STL存在一些与GNU编译器不一致的部分。最好使用那些已经被证明正确的部分。

Q:我是否可以使用动态内存?

A:可以。但是这样的程序不好调试,因此除非必要,建议避免使用。一般情况下可以直接申请一个足够大的数组等。

Q:我使用PASCAL语言,在读数据时经常出现错误,为什么?

A:由于PASCAL中的read, readln语句不能自动处理空白符,因此在输入时需要手工处理。另外在一次读入多个变量,而这时已经遇

到文件结束时,将发生Runtime Error,请特别留意。

比赛经验
Q:我是否应该先全面阅读题目?

A:是的。应该在全面阅读的基础上找出最简单的题目,从简到难开始做题。

Q:我应该先做哪道题?

A:先做最简单的,见上。

Q:我如何知道那道题最简单?

A:靠自己的理解能力和经验。在比赛开始一段时间后,可以根据多数人升起的气球颜色来参照。如果你认为某道题很简单,但是相应颜色的气球升起的很少,则这道题目可能有一些情况你和大家都没有考虑清楚。

Q:如果一道题目,我反复提交都不对该怎么办?

A:有的时候,换一道题,换个思路也许会更好。

Q:我什么时候提交一道题目?

A:要记住,正确的题目数量比用时更重要。因此在觉得自己的程序正确,本地测试通过后,就要及时提交。

Q:题目中的测试数据测试通过,是否就表示程序正确?

A:不一定。有些题目的测试数据没有覆盖所有可能情况。需要自己另行编制测试数据。

Q:自己进行测试时应注意什么?

A:应注意测试数据的代表性,尤其是边界条件的情况。

Q:比赛要结束前,我应该做哪道题?

A:一般来说,在比赛结束前一个小时内,应该集中力量做一道题。

Q:我的解答怎么会超时呢?

A:有可能测试数据中数据的规模很大,在本地要对这种数据进行测试。也可能对于输入数据的某些情况,存在一些快捷的判断方式。

相关文档