欢迎来到奇葩栖息地!欢迎加入Discord服务器:XfrfHCzfbW欢迎加入QQ频道:r01m9y3iz6请先至特殊:参数设置验证邮箱后再进行编辑。特殊:参数设置挑选自己想要使用的小工具!不会编辑?请至这里学习Wikitext语法。

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

来自奇葩栖息地
添加的内容 删除的内容
无编辑摘要
无编辑摘要
第1行: 第1行:
众所周知,编译器是没有脑子的⑨,所以在编写代码的过程中,总会有一些智障错误被编译器放过去,然后苦逼的 OIer 和程序员就要进行漫长的 debug 过程。
众所周知,编译器是没有脑子的⑨,所以在编写代码的过程中,总会有一些智障错误被编译器放过去,然后苦逼的OIer和程序员就要进行漫长的debug过程。


而<s>丧心病狂</s>出题人如果给了一个非常水的样例,你甚至不会发现自己的代码有问题,如果你没有进行对拍的情况下,这道题在 ACM/CodeForces 赛制比赛中就会显WA、TLE、RE、MLE甚至是CE{{Heimu|并受到罚时}}, OI 赛制比赛中就会挂分/爆零{{Heimu|论对拍的重要性}}。
而<s>丧心病狂</s>出题人如果给了一个非常水的样例,你甚至不会发现自己的代码有问题,如果你没有进行对拍的情况下,这道题在ACM/CodeForces赛制比赛中就会显WA、TLE、RE、MLE甚至是CE(并受到罚时),在OI赛制比赛中就会挂分/爆零{{Heimu|论对拍的重要性}}。


下面将举几个典型的智障错误例子。这些错误都是 crz <s>践行</s>过的
下面将举几个典型的智障错误例子。{{Heimu|这些错误都是crz践行过的}}


=== 前置知识 ===
=== 前置知识 ===
第19行: 第19行:
# UKE:Unknown Error,出现未知错误。(黑)
# UKE:Unknown Error,出现未知错误。(黑)


一些接下来代码中可能会出现的宏定义/常量:<syntaxhighlight lang="c++">
一些接下来代码中可能会出现的宏定义/常量:
<syntaxhighlight lang="c++">
#define rg register
#define rg register
#define ll long long
#define ll long long
第31行: 第32行:
</syntaxhighlight>
</syntaxhighlight>


=== 会 CE ===
=== 会CE ===


# <syntaxhighlight lang="c++">
# <syntaxhighlight lang="c++">
第40行: 第41行:
}
}
};
};
</syntaxhighlight>
</syntaxhighlight>结构体的构造函数和结构题名字对不上。{{Heimu|然鹅,在 GCC 较老的版本(特指 Dev-C++)中这个不会 CE。}} {{Heimu|但是 NOI GCC 和某些 OJ 上的 Clang 并不认,交上去还是会 CE。}} {{Heimu|所以 Dev-C++ 背锅!}}
结构体的构造函数和结构题名字对不上。然鹅,在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>你并不能在结构体外这样重载运算符。
你并不能在结构体外这样重载运算符。
# <syntaxhighlight lang="c++">
# <syntaxhighlight lang="c++">
signed mian(){
signed mian(){
第56行: 第58行:
return 0;
return 0;
}
}
</syntaxhighlight>面~函数。
</syntaxhighlight>
面~函数。
# 在比赛快要结束时,你突然发现某题会爆 int,于是你:<syntaxhighlight lang="c++">
# 在比赛快要结束时,你突然发现某题会爆 int,于是你:
<syntaxhighlight lang="c++">
#define int long long
#define int long long
</syntaxhighlight>然鹅你:<syntaxhighlight lang="c++">
</syntaxhighlight>
然鹅你:<syntaxhighlight lang="c++">
int main(){
int main(){
//do somethings.
//do somethings.
return 0;
return 0;
}
}
</syntaxhighlight>
</syntaxhighlight>所以,在这里倡导大家多使用 <code>signed main</code> 代替 <code>int main</code>。
所以,在这里倡导大家多使用 <code>signed main</code> 代替 <code>int main</code>。
# 待补充
# 待补充


=== 会 RE ===
=== 会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。
# 你的代码中有各类[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>-inf</code> 防止越界了吗?(如果是 fhq-Treap 当我没说)
# 你的线段树<code>build</code>了吗
# 你的平衡树插了<code>inf</code>和<code>-inf</code>防止越界了吗?(如果是fhq-Treap当我没说)
# 待补充。
# 待补充。


=== 会 TLE ===
=== 会TLE ===


=== 会 MLE ===
=== 会MLE ===


=== 会 WA ===
=== 会WA ===


=== 注释 ===
=== 注释 ===
{{Notelist}}
{{Notelist}}



2021年7月12日 (一) 13:08的版本

众所周知,编译器是没有脑子的⑨,所以在编写代码的过程中,总会有一些智障错误被编译器放过去,然后苦逼的OIer和程序员就要进行漫长的debug过程。

丧心病狂的出题人如果给了一个非常水的样例,你甚至不会发现自己的代码有问题,如果你没有进行对拍的情况下,这道题在ACM/CodeForces赛制比赛中就会显示WA、TLE、RE、MLE甚至是CE(并受到罚时),在OI赛制比赛中就会挂分/爆零论对拍的重要性

下面将举几个典型的智障错误例子。这些错误都是crz践行过的

前置知识

在阅读下面内容前,你需要先知道这些东西:

关于评测状态:

  1. AC:Accept,程序通过。(绿)
  2. WA:Wrong Answer,答案错误。(红)
  3. CE:Compile Error,编译错误。(浅黄)
  4. PE:Presentation Error,输出格式错误UVa,说的就是你。(深黄)
  5. RE:Runtime Error,运行时错误。(紫)
  6. TLE:Time Limit Exceeded,超出时间限制。(黑)
  7. MLE:Memory Limit Exceeded,超出内存限制。(黑)
  8. 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

  1. struct edge{
    	int l,r,val;
    	node(){
    	    //do somethings.
    	}
    };
    

结构体的构造函数和结构题名字对不上。(然鹅,在GCC较老的版本(特指Dev-C++)中这个不会CE。)(但是NOI的GCC和某些OJ上的Clang并不认,交上去还是会CE。)所以Dev-C++背锅!

  1. struct node{
        int a,b;
        //do somethings.
    };
    bool operator<(const node& _)const{
        return 1;
    }
    

你并不能在结构体外这样重载运算符。

  1. signed mian(){
        //do somethings.
        return 0;
    }
    

面~函数。

  1. 在比赛快要结束时,你突然发现某题会爆 int,于是你:
#define int long long

然鹅你:

int main(){
    //do somethings.
    return 0;
}

所以,在这里倡导大家多使用 signed main 代替 int main

  1. 待补充

会RE

  1. 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];
    		}
    	}
    

你的倍增数组的倍增维在第一维还是第二维?

  1. 你的代码中有各类UB行为,这些本来不会有大问题,然鹅你开了O2。
  2. 你的线段树build了吗?
  3. 你的平衡树插了inf-inf防止越界了吗?(如果是fhq-Treap当我没说)
  4. 待补充。

会TLE

会MLE

会WA

注释