ACM相关
- 常见错误对应表
错误名 | 可能原因 |
---|---|
Waiting | 程序刚提交 |
Queuing | 排队等待评测中 |
Compiling | 评测机编译中 |
Running | 正在评测机上运行 |
Judging | 正在检查输出是否正确 |
Accept | 通过 |
compilation Error | 编译错误,代码本身错误,有些ide类似于vs之类的,十分友好,编译过程中,会自动添加一些常用头文件,但oj不会,这种错误会导致CE,一般这种错误不会罚时,而且有错误信息 |
Wrong Answer | 答案本身错误,不包括因格式错误造成的错误 |
Presentation Error | 输出格式有错误,可能是多了或少了空格或者回车 |
Time Limit Exceeded | 运行时间超过题目限制,算法不够优,或者存在死循环,有时候变量设置过多或赋值操作过多也有可能导致TLE,玄学 -_-!!! |
Memory Limit Exceeded | 运行内存超过题目限制 -_-!!! |
少数情况下,当数据较多时,TLE和MLE可以通过c和c++语言的互换解决,c++中的cin和cout因为需要保持和stdin/stdout的同步,所以会有很多额外开销,所以,cin/cout的效率会比scanf/printf低 | |
Output Limit Exceeded | 输出内容太多,可能有死循环输出 |
Floating Point Error | Divide by 0,出现除0语句 |
Segmentation Fault | buffer overflow缓冲区溢出,即访问数组越界,访问了未申请的空间 stack overflow堆栈溢出,申请了过大的空间,或者递归层次太多 |
Runtime Error | 运行时出错,异常终止,存在非法操作,如c/c++的越界访问数组 |
Restricted Function | 程序调用了不该调用的函数,如fork(),execv(),socket()等 |
System Error | oj内部出现错误 |
Out Of Contest Time | 超出比赛时间 |
- 输入输出问题
有些题目会有大量的输入或输出数据,这时候比较容易出现因为读取数据或输出数据过慢造成的TLE,一般来说,cin/cout因为需要和stdin/stdout保持同步而产生更多额外花销,导致其效率较低。也可以人为的取消这个同步操作
std::ios::sync_with_stdio(false)
取消同步后的cin操作和scanf操作的效率差不多
从网上找了个对比图(一千万个随机数据,55m)
注:scanf较为危险,容易造成缓冲区溢出
- 常用数据类型表示范围
数据类型 | 范围 |
---|---|
unsigned int | 0~4294967295 |
int | 2147483648~2147483647 |
unsigned long | 0~4294967295 |
long | 2147483648~2147483647 |
long long的最大值 | 9223372036854775807 |
long long的最小值 | -9223372036854775808 |
unsigned long long的最大值 | 18446744073709551615 |
__int64的最大值 | 9223372036854775807 |
__int64的最小值 | -9223372036854775808 |
unsigned __int64的最大值 | 18446744073709551615 |
- 常用常量
常量名 | 表达式 |
---|---|
PI圆周率 |
π=arctan(1.0)∗4
π
=
arctan
(
1.0
)
∗
4
或者 π=arccos(−1.0) π = arccos ( − 1.0 ) |