支持哪些编程语言?
支持C(GCC, O2优化), C++(G++,O2优化), Python3, Java(1.7+), C#(Mono 5.2.0).
GCC与G++的版本依赖服务器端的操作系统版本,一般是4.4.x(CentOS6)或者4.8.x(CentOS7)版本,编译器的编译选项可以定制,如需定制,请联系平台的管理员。
如何读取测试数据?
待测程序每次运行时只测试一组数据,程序中不要循环读入多次测试数据。
平台支持在线编写代码并提交吗?
平台既支持源文件提交,也支持在线编写代码并提交(支持语法高亮),教师出题时可以设定提交方式。
目前绝大多数OJ平台使用文本框提交代码,我们认为源文件提交有两个好处:
- 符合工程实际。
- 支持多源文件提交,复杂问题的源文件组织也是一种工程训练。特别是Java代码,一般一个类对应一个文件,若使用文本框就要破坏Java的编程规范。
提交代码文件时,请使用规范的源文件后缀。提交C语言程序文件的扩展名必须是小写字符c;
提交C++语言程序时,必须先选择提交程序语言为C++语言,然后再提交源程序文件。
评判结果代表什么含义?
- Accepted(AC):程序完全正确!
- Presentation Error (PE) : 程序输出结果的格式有问题。请检查输出是否多了或者少了空格(' ')、制表符('\t')或者换行符('\n')。
- Wrong Answer (WA) :输出结果错误,算法逻辑可能有问题。
- Runtime Error (RE) (WA) :运行时错误。如果C/C++程序,常见的错误类型有:
- SIGFPE:零作为除数。
- SIGSEGV:非法内存访问,是最为常见的错误,一般这些问题在小规模测试的时候不会发现,而在 OJ 上大规模数据测试时
候就容易暴露出来,所以请自行构造一些数据来调试程序。可能原因
(1)数组越界使用;
(2)指针的错误使用, 一般是对非用户区的地址空间进行读或者写操作;
(3)越权操作文件指针, 程序中却未捕捉该类错误;
(4)栈溢出, 一般是因为过多的递归调用或者过大的临时变量导致;
(5)程序使用的内存超过了题目设定的上限。
- SIGXFSZ:程序输出过多数据,有可能存在死循环。
- SIGABRT:程序中止运行,原因可能是
(1)由于严重的错误(例如内存重复释放double free或者heap corruption),库函数调用abort中止程序运行;
(2)断言(assert)使用abort实现,断言条件为false。
- Time Limit Exceeded (TLE):程序运行的时间已经超出了这个题目的时间限制,一般可能的问题是存在死循环;或者输入处理不对,一直等待输入。
- Memory Limit Exceeded (MLE):程序运行占用内存已经超出了这个题目的内存限制。
- Running:程序正在运行。
- Compilation Error (CE):编译错误,语法有问题。
支持哪些输入输出方式?
支持三类输入方式(标准、文件、命令行参数)与两类输出方式(标准、文件)的任意组合。
平台的多数题目仅支持标准输入/标准输出,普通用户只能录入标准输入/标准输出 类型的题目。
教师在后台可以录入任意输入输出方式的题目,如果普通用户有题目输入输出方式的特殊要求,请与系统的主管教师联系。
Windows平台使用Visual Studio MSVC编写代码需要注意什么?
源程序最终要上传到Linux平台上,使用GCC编译与执行。需要注意一下问题:
- VC 可能会自动 include 一些头文件,gcc 编译提示函数找不到。
- GCC没有itoa(数字转换为字符串的函数)
- 换行符在Windows平台是"\r\n" ,Linux平台是 "\n",程序处理换行的时候最好两种情况都要考虑到。
如何举办比赛?
举办比赛,需要“在我的题库中“录入题目,竞赛不能使用公共题库中的编程题。
如果已经创建了自己的题库,进入“我的竞赛“,创建新的比赛,经主管教师批准后,就可以进入竞赛列表。
普通用户只能举办公开赛(Public)和邀请赛(Invitation),如果是邀请赛,必须填写邀请码,用户凭借邀请码才能进入比赛,比赛主办人负责把邀请码通过邮件或者其他方式告知参赛者。
目前仅支持ACM-ICPC规则。
如何参加在线比赛?
有三种类型的比赛:公开比赛(Public)、邀请赛(Invitation)、内部比赛(Private)。
所有注册用户均可以参加公开的比赛,参加邀请赛的用户将会在比赛前收到比赛组织者提供的邀请码,输入邀请码才能进入比赛。
邀请码只需要输入一次,以后可以直接进入比赛。
内部比赛只有教师才能举办,可以指定哪些账号可以参加比赛。