欢迎来到奇葩栖息地!欢迎加入Discord服务器:XfrfHCzfbW。请先至特殊:参数设置验证邮箱后再进行编辑。在特殊:参数设置挑选自己想要使用的小工具!不会编辑?请至这里学习Wikitext语法。
那年那日的智障错误:修订间差异
来自奇葩栖息地
添加的内容 删除的内容
Legitimity(讨论 | 贡献) 无编辑摘要 |
小无编辑摘要 |
||
第1行: | 第1行: | ||
众所周知,编译器是没有脑子的⑨,所以在编写代码的过程中,总会有一些智障错误被编译器放过去,然后苦逼的 |
众所周知,编译器是没有脑子的⑨,所以在编写代码的过程中,总会有一些智障错误被编译器放过去,然后苦逼的OIer和程序员就要进行漫长的debug过程。 |
||
而<s>丧心病狂</s> |
而<s>丧心病狂的</s>出题人如果给了一个非常水的样例,你甚至不会发现自己的代码有问题,如果你没有进行对拍的情况下,这道题在ACM/CodeForces赛制比赛中就会显示WA、TLE、RE、MLE甚至是CE(并受到罚时),在OI赛制比赛中就会挂分/爆零{{Heimu|论对拍的重要性}}。 |
||
下面将举几个典型的智障错误例子。 |
下面将举几个典型的智障错误例子。{{Heimu|这些错误都是crz践行过的}} |
||
=== 前置知识 === |
=== 前置知识 === |
||
第19行: | 第19行: | ||
# UKE:Unknown Error,出现未知错误。(黑) |
# UKE:Unknown Error,出现未知错误。(黑) |
||
一些接下来代码中可能会出现的宏定义/常量: |
一些接下来代码中可能会出现的宏定义/常量: |
||
<syntaxhighlight lang="c++"> |
|||
#define rg register |
#define rg register |
||
#define ll long long |
#define ll long long |
||
第31行: | 第32行: | ||
</syntaxhighlight> |
</syntaxhighlight> |
||
=== 会 |
=== 会CE === |
||
# <syntaxhighlight lang="c++"> |
# <syntaxhighlight lang="c++"> |
||
第40行: | 第41行: | ||
} |
} |
||
}; |
}; |
||
</syntaxhighlight> |
|||
结构体的构造函数和结构题名字对不上。(然鹅,在GCC较老的版本(特指Dev-C++)中这个不会CE。)(但是NOI的GCC和某些OJ上的Clang并不认,交上去还是会CE。){{Heimu|所以Dev-C++背锅!}} |
|||
# <syntaxhighlight lang="c++"> |
# <syntaxhighlight lang="c++"> |
||
struct node{ |
struct node{ |
||
第49行: | 第51行: | ||
return 1; |
return 1; |
||
} |
} |
||
</syntaxhighlight> |
|||
你并不能在结构体外这样重载运算符。 |
|||
# <syntaxhighlight lang="c++"> |
# <syntaxhighlight lang="c++"> |
||
signed mian(){ |
signed mian(){ |
||
第56行: | 第58行: | ||
return 0; |
return 0; |
||
} |
} |
||
</syntaxhighlight> |
</syntaxhighlight> |
||
面~函数。 |
|||
# 在比赛快要结束时,你突然发现某题会爆 int,于是你: |
# 在比赛快要结束时,你突然发现某题会爆 int,于是你: |
||
<syntaxhighlight lang="c++"> |
|||
#define int long long |
#define int long long |
||
</syntaxhighlight |
</syntaxhighlight> |
||
然鹅你:<syntaxhighlight lang="c++"> |
|||
int main(){ |
int main(){ |
||
//do somethings. |
//do somethings. |
||
return 0; |
return 0; |
||
} |
} |
||
</syntaxhighlight> |
|||
所以,在这里倡导大家多使用 <code>signed main</code> 代替 <code>int main</code>。 |
|||
# 待补充 |
# 待补充 |
||
=== 会 |
=== 会RE === |
||
# <syntaxhighlight lang="c++"> |
# <syntaxhighlight lang="c++"> |
||
第78行: | 第84行: | ||
} |
} |
||
</syntaxhighlight> |
</syntaxhighlight> |
||
你的倍增数组的倍增维在第一维还是第二维? |
|||
# 你的代码中有各类 |
# 你的代码中有各类[https://baike.baidu.com/item/%E6%9C%AA%E5%AE%9A%E4%B9%89%E8%A1%8C%E4%B8%BA UB]行为,这些本来不会有大问题,然鹅你开了O2。 |
||
# 你的线段树 <code>build</code> 了吗? |
|||
# 你的 |
# 你的线段树<code>build</code>了吗? |
||
# 你的平衡树插了<code>inf</code>和<code>-inf</code>防止越界了吗?(如果是fhq-Treap当我没说) |
|||
# 待补充。 |
# 待补充。 |
||
=== 会 |
=== 会TLE === |
||
=== 会 |
=== 会MLE === |
||
=== 会 |
=== 会WA === |
||
=== |
=== 注释 === |
||
{{Notelist}} |
{{Notelist}} |
||
2021年7月12日 (一) 13:08的版本
众所周知,编译器是没有脑子的⑨,所以在编写代码的过程中,总会有一些智障错误被编译器放过去,然后苦逼的OIer和程序员就要进行漫长的debug过程。
而丧心病狂的出题人如果给了一个非常水的样例,你甚至不会发现自己的代码有问题,如果你没有进行对拍的情况下,这道题在ACM/CodeForces赛制比赛中就会显示WA、TLE、RE、MLE甚至是CE(并受到罚时),在OI赛制比赛中就会挂分/爆零论对拍的重要性。
下面将举几个典型的智障错误例子。这些错误都是crz践行过的
前置知识
在阅读下面内容前,你需要先知道这些东西:
关于评测状态:
- AC:Accept,程序通过。(绿)
- WA:Wrong Answer,答案错误。(红)
- CE:Compile Error,编译错误。(浅黄)
- PE:Presentation Error,输出格式错误UVa,说的就是你。(深黄)
- RE:Runtime Error,运行时错误。(紫)
- TLE:Time Limit Exceeded,超出时间限制。(黑)
- MLE:Memory Limit Exceeded,超出内存限制。(黑)
- UKE:Unknown Error,出现未知错误。(黑)
一些接下来代码中可能会出现的宏定义/常量:
#define rg register
#define ll long long
#define ull unsigned long long
const int intinf=0x7f7f7f7f;
const ll llinf=0x7f7f7f7f7f7f7f7f;
const double dbinf=2e18;
const double alpha=0.72;
const double delta=0.97;
const double pi=acos(-1);
会CE
struct edge{ int l,r,val; node(){ //do somethings. } };
结构体的构造函数和结构题名字对不上。(然鹅,在GCC较老的版本(特指Dev-C++)中这个不会CE。)(但是NOI的GCC和某些OJ上的Clang并不认,交上去还是会CE。)所以Dev-C++背锅!
struct node{ int a,b; //do somethings. }; bool operator<(const node& _)const{ return 1; }
你并不能在结构体外这样重载运算符。
signed mian(){ //do somethings. return 0; }
面~函数。
- 在比赛快要结束时,你突然发现某题会爆 int,于是你:
#define int long long
然鹅你:
int main(){
//do somethings.
return 0;
}
所以,在这里倡导大家多使用 signed main
代替 int main
。
- 待补充
会RE
int f[21][maxn]; //do somethings. for(rg int j=1;j<21;++j){ for(rg int i=1;i<=n;++i){ f[i][j]=f[f[i][j-1]][j-1]; } }
你的倍增数组的倍增维在第一维还是第二维?
- 你的代码中有各类UB行为,这些本来不会有大问题,然鹅你开了O2。
- 你的线段树
build
了吗? - 你的平衡树插了
inf
和-inf
防止越界了吗?(如果是fhq-Treap当我没说) - 待补充。
会TLE
会MLE
会WA
注释
数学 |
| ||||
---|---|---|---|---|---|
物理 |
| ||||
化学 |
| ||||
信息学 |
| ||||
生物学 |
| ||||
其他 |