那年那日的智障错误:修订间差异

删除53字节 、​ 2021年7月12日 (星期一)
无编辑摘要
无编辑摘要
无编辑摘要
第1行:
众所周知,编译器是没有脑子的⑨,所以在编写代码的过程中,总会有一些智障错误被编译器放过去,然后苦逼的 OIer 和程序员就要进行漫长的 debug 过程。
 
而<s>丧心病狂</s>出题人如果给了一个非常水的样例,你甚至不会发现自己的代码有问题,如果你没有进行对拍的情况下,这道题在 ACM/CodeForces 赛制比赛中就会显WA、TLE、RE、MLE甚至是CE{{Heimu|CE(并受到罚时}},), OI 赛制比赛中就会挂分/爆零{{Heimu|论对拍的重要性}}。
 
下面将举几个典型的智障错误例子。{{Heimu|这些错误都是 crz <s>践行</s>过的}}
 
=== 前置知识 ===
第19行:
# UKE:Unknown Error,出现未知错误。(黑)
 
一些接下来代码中可能会出现的宏定义/常量:<syntaxhighlight lang="c++">
<syntaxhighlight lang="c++">
#define rg register
#define ll long long
第31行 ⟶ 第32行:
</syntaxhighlight>
 
=== 会 CE ===
 
# <syntaxhighlight lang="c++">
第40行 ⟶ 第41行:
}
};
</syntaxhighlight>
</syntaxhighlight>结构体的构造函数和结构题名字对不上。{{Heimu|然鹅,在 GCC 较老的版本(特指 Dev-C++)中这个不会 CE。}} {{Heimu|)(但是 NOI GCC 和某些 OJ 上的 Clang 并不认,交上去还是会 CE。}} {{Heimu|所以 Dev-C++ 背锅!}}
# <syntaxhighlight lang="c++">
struct node{
第49行 ⟶ 第51行:
return 1;
}
</syntaxhighlight>
 
</syntaxhighlight>你并不能在结构体外这样重载运算符。
# <syntaxhighlight lang="c++">
signed mian(){
第56行 ⟶ 第58行:
return 0;
}
</syntaxhighlight>面~函数。
面~函数。
# 在比赛快要结束时,你突然发现某题会爆 int,于是你:<syntaxhighlight lang="c++">
<syntaxhighlight lang="c++">
#define int long long
</syntaxhighlight>然鹅你:<syntaxhighlight lang="c++">
然鹅你:<syntaxhighlight lang="c++">
int main(){
//do somethings.
return 0;
}
</syntaxhighlight>
</syntaxhighlight>所以,在这里倡导大家多使用 <code>signed main</code> 代替 <code>int main</code>。
# 待补充
 
=== 会 RE ===
 
# <syntaxhighlight lang="c++">
第78行 ⟶ 第84行:
}
 
</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>inf</code> 和 <code>-infbuild</code> 防止越界了吗?(如果是 fhq-Treap 当我没说)
# 你的平衡树插了<code>inf</code>和<code>-inf</code>防止越界了吗?(如果是fhq-Treap当我没说)
# 待补充。
 
=== 会 TLE ===
 
=== 会 MLE ===
 
=== 会 WA ===
 
=== 注释 ===
{{Notelist}}
 
350

个编辑