常见问题

CG Online Judge(简称CG-OJ)支持哪些语言?

支持C(GCC, O2优化), C++(G++,O2优化), Python3(3.4.5), Java(1.7), C#(Mono 5.2.0).

并行与分布式程序支持MPI C/C++, Pthread, Java多线程.

GCC与G++的版本依赖服务器端的操作系统版本,一般是4.4.x(CentOS6)或者4.8.x(CentOS7)版本。


CG-OJ如何读取测试数据?

待测程序每次运行时只测试一组数据,程序中不要循环读入多次测试数据


CG-OJ为何使用源文件而不是文本框提交代码?

目前绝大多数OJ平台使用文本框提交代码,但CG系统从2003年起一直坚持使用源文件代码提交方式,我们认为源文件提交有两个好处:  

  • 符合工程实际。
  • 支持多源文件提交,复杂问题的源文件组织也是一种工程训练。特别是Java代码,一般一个类对应一个文件,若使用文本框就要破坏Java的编程规范。

提交代码文件时,请使用规范的源文件后缀。提交C语言程序文件的扩展名必须是小写字符c; 提交C++语言程序时,必须先选择提交程序语言为C++语言,然后再提交源程序文件。


CG-OJ的评判结果是什么意思?

  • 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):编译错误,语法有问题。


CG-OJ支持哪些输入输出方式?

支持三类输入方式(标准、文件、命令行参数)与两类输出方式(标准、文件)的任意组合。

平台的多数题目仅支持标准输入/标准输出,普通用户只能录入标准输入/标准输出 类型的题目。 教师在后台可以录入任意输入输出方式的题目,如果普通用户有题目输入输出方式的特殊要求,请与系统的主管教师联系。


可以直接使用教学系统的学号/密码登录CG-OJ系统吗?

CG-OJ与教学系统是同一套账号系统,如果是本校的学生,你的学号很可能已经被某门课的教师导入系统,尽量使用教学系统中的学号/密码登录,不要申请新的账号。


Windows平台使用Visual Studio MSVC编写代码需要注意什么?

源程序最终要上传到Linux平台上,使用GCC编译与执行。需要注意一下问题:

  • VC 可能会自动 include 一些头文件,gcc 编译提示函数找不到。
  • GCC没有itoa(数字转换为字符串的函数)
  • 换行符在Windows平台是"\r\n" ,Linux平台是 "\n",程序处理换行的时候最好两种情况都要考虑到。


如何在CG-OJ上举办比赛?

举办比赛,需要在我的题库中录入题目,竞赛不能使用公共题库中的编程题。 如果已经创建了自己的题库,进入我的竞赛,创建新的比赛,经主管教师批准后,就可以进入竞赛列表。

比赛分为公开赛(Public)和内部比赛(Private),如果是邀请赛,必须填写邀请码,用户凭借邀请码才能进入比赛,比赛主办人负责把邀请码通过邮件或者其他方式告知参赛者。

目前仅支持ACM-ICPC规则。


如何参加CG-OJ的在线比赛?

在CG-OJ上有两种类型的比赛:公开比赛(Public)和内部比赛(Private)。 所有注册用户均可以参加公开的比赛,只有授权用户才可以参加内部比赛,参加内部比赛的用户将会在比赛前收到比赛组织者提供的邀请码,输入邀请码才能进入比赛。 邀请码只需要输入一次,以后可以直接进入比赛。