F.A.Qs
更新时间:2021-05-09 02:36:37 编辑:CSGrandeur
Q:编译器版本及编译运行参数
A:系统 Ubuntu Server 24.04. 参数如下
| C: | gcc -std=c17 -O2 -Wall -Wextra -DONLINE_JUDGE -static -Wl,–no-relax -Wl,–no-pie -mcmodel=medium -o Main Main.c |
| C++: | g++ -std=c++17 -O2 -Wall -Wextra -DONLINE_JUDGE -static -Wl,–no-relax -Wl,–no-pie -mcmodel=medium -o Main Main.cpp |
| Java: | javac -J-Xms1024M -J-Xmx1024M -J-Xss64M
-encoding UTF-8 Main.java java -Dfile.encoding=UTF-8 -XX:+UseSerialGC -Xss64M -Xms1024M -Xmx<题目内存限制+512M> -cp . Main |
| Python: | python3 -m py_compile Main.py python3 Main.py |
参数说明:
-Wall -Wextra: 启用所有常见警告和额外警告,帮助发现潜在问题-static: 静态链接,生成独立的可执行文件,不依赖动态库-Wl,--no-relax -Wl,--no-pie -mcmodel=medium: 解决静态链接时的重定位问题,确保编译稳定性-DONLINE_JUDGE: 定义预处理宏,可用于条件编译
运行时限制:
- Java、Python 有额外的内存和时间限制用于运行与评测(具体数值由后端配置决定)
编译器版本:
- C/C++: gcc version 14.2.0 (Ubuntu 24.04)
- Python: 3.12.x
- Java: openjdk 21.x
Q:输入输出的形式
A:输入为stdin(Standard Input),输出为stdout(Standard Output).
例如,你可以用C语言的scanf或C++的cin从stdin中读取数据,并使用C语言的printf或C++的cout向stdout输出.
评测机禁止程序进行读写文件等其它输入输出行为,此类行为都会得到“Runtime Error”的结果.
以“多组a b两个数求和直至文件末尾”为例:
C:
#include <stdio.h>
int main(){
int a,b;
while(scanf("%d %d",&a, &b) != EOF)
printf("%d\n",a+b);
return 0;
}C++:
#include <iostream>
using namespace std;
int main(){
int a,b;
while(cin >> a >> b)
cout << a+b << endl;
return 0;
}
Python:
#!/usr/bin/python3
import sys
for line in sys.stdin:
a, b = line.split()
print(int(a) + int(b))
Java:
import java.util.*;
public class Main{
public static void main(String args[]){
Scanner cin = new Scanner(System.in);
int a, b;
while (cin.hasNext()){
a = cin.nextInt(); b = cin.nextInt();
System.out.println(a + b);
}
}
}Q:本地运行良好,为什么评测结果是Compile Error
A: GNU 与 MS-VC++存在一些差异,例如:
main返回值需要为int, 不能为void main.i在for(int i=0...){...}外部不再有效itoa不是ANSI函数.__int64不是ANSI,需要64位整数输入应使用long long.
Q:有哪些评测结果
A:全部评测结果:
- Accepted: 程序正确编译执行并通过了全部评测数据.
- Pending: 程序已录入数据库,正在等待评测.
- Pending Rejudge: 程序正在等待重测.
- Compiling: 程序正在被评测机编译.
- Presentation Error: 程序输出的答案逻辑正确,但格式没有与评测数据的输出完全一致,检查数据之间的空行、空格等符号与题目描述及样例输出是否有出入.
- Wrong Answer: 存在部分评测数据的结果与答案不一致.
- Time Limit Exceeded: 程序运行时间超出了题目限制.
- Memory Limit Exceeded: 程序运行需要的内存超出了题目限制.
- Output Limit Exceeded: 程序输出远远超出了评测数据答案的长度,通常为 3 倍以上,请检查程序逻辑,可能是输出了不正确的内容,或陷入死循环.
- Runtime Error: 程序运行错误,包括不限于以下情况:段错误、浮点异常、尝试读写禁止的内存区域、调用了禁止的函数等.
- Compile Error: 评测机无法编译你的程序,请检查语法,以及所用本地编译器与评测机编译器的版本差异.
- Judge Error: 评测机遇到非预期情况,管理员将进一步处理.