ACM国际大学生程序设计竞赛(英文全称:ACM International Collegiate Programming Contest(ACM-ICPC或ICPC)是由美国计算机协会(ACM)主办的,一项旨在展示大学生创新能力、团队精神和在压力下编写程序、分析和解 决问题能力的年度竞赛。经过近30多年的发展,ACM国际大学生程序设计竞赛已经发展成为最具影响力的大学生计算机竞赛。赛事目前由IBM公司赞助。

 

 

北大ACM的地址:http://acm.pku.edu.cn

 

如何在北大ACM中提交问题的解答?

1.在北大ACM中注册并登陆

2.点击“Problems”按钮查看所有的问题列表

3.点击“Submit Problem”按钮提交问题解答

4.在打开的页面中输入问题ID,选择语言类型,并粘贴代码

5.在“Online Status”中查看状态,可以按照问题ID,以及用户名进行过滤。

 

 

以下的北大ACM系统的FAQ,由英文原文翻译所得:

Q :

A : 你的程序只能从stdin获取输入,向stdout进行输出。例如:可以使用C语言中的scanf获取C++中的cin获取输入,而使用C语言中的printf或者C++中的cout进行输出。你的程序绝对不能尝试去打开或者读写文件 ,否则将给出运行时错误提示或者错误答案。

 

Q ACM使用的编译器是什么?

A

 

import java.util.*;

public class Main
{
    public static void main(String args[])
    {
        Scanner cin = new Scanner(System.in);
        int a = cin.nextInt(), b = cin.nextInt();
        System.out.println(a + b);
    }
}

 

使用Java语言尤其需要注意:

提交的Java程序必须是一个单源文件,并且是一个以Main命名的类,中间的执行代码在静态的main函数中,否则会引起编译错误。

 

Q : 我的程序如何被判定?

A :

2. 接下来将会运行你的程序,提供输入并且进行计时。输入数据被保存至一个或多个文件中。每个文件都被用于判定你的程序。程序运行过程中,如果发现你的程序运行状态超过阈值(Runtime Error,Time Limit Exceed,Memory Llimit Exceed,Output Limited Exceed),结果将会被立即返回,不会做进一步的判定。这意味着如果出现了TLE或者MLE,并不意味着你的程序在提供了足够的资源后将正确运行。当你的程序结束一个输入文件并制造了一些输出并存储在一个输出文件中,将会用这个输出文件与正确的输出进行比较。如果输出不正确,则会给出Wrong Answer的提示。否则将会继续处理下一个输入文件。当所有的输入文件处理结束后,如果没有出现Presentation Error,则会返回Accepted。

 

Q : 返回信息都是什么意思?

A :

Waiting

Accepted (AC)

Presentation Error (PE) :

Wrong Answer (WA) :

Runtime Error (RE) :

Time Limit Exceed (TLE) :

每一个Problem都有两种时间限制,Total Time Limit和Case Time Limit。前者是你的程序处理所有输入文件的总时间,后者是你的程序处理单个输入文件的时间,超过两者其一都会产生TLE。如果你被返回了TLE但是你的程序运行时间在限制范围内,则你的程序一定是超过了CASE TIME LIMIT。

如果一个Problem没有指定具体的单个输入文件运行时间,则只适用总时间限制。

Memory Limit Exceed (MLE)

Output Limit Exceed (OLE)

Compile Error (CE)

No such problem:

System Error

Validate Error:

 

Q : 时间限制是1000MS,但是有些人的程序几秒钟才运行完,仍然得到Accepted

A :

 

Q : 我的程序只比时间限制慢了15MS,怎样才能提升?

A :