代码错误原因分析

永远注意符号,变量名的错误

永远注意多测清空

小心数组开小,数组开小是变化之神

不要卡着极限的数据开数组,最好保险多开 \(5\) 或是 \(10\)
Arcka 是代码之神,她基本不会写出任何错误

TLE / 死循环

斜体表示可能造成死循环
  1. memeset 清空
  2. for 循环变量写错
    如:
for(int i = 1; i <= n; ++ i){
	for(int j = 1; j <= n; ++ i){
		
	}
}
  1. while 退出边界错误
  2. 二分中 \(l, r\) 求法错误
    如:
while(l <= r){
	int mid = (l + r) >> 1;
	if(check(mid)) l = mid;
	else r = mid;
} //当 l = 3, r = 4 且 check() 一直返回 true 时会发生死循环
  1. 数组开小
  2. string 使用错误
string c;
char a[N];
for(int i = 1; i <= n; ++i){
	c = c + a[i]; //这样会把时间拉满,估计 O(n^2) 的复杂度
	c += a[i]; //这样才 O(n)
}

估计是因为 c = c + a[i] 时的本质是将 string 清空然后重新赋值,导致复杂度超炸

CE

……

当发现玄学CE且无法调出时,尽量快速换写法,莫浪费时间

RE

  1. 访问越界(数组开小-注意数组下标为从 \(0\) 开始)
  2. 除以 \(0\)

MLE

  1. 数组开大
  2. 数组开小

\(O_2\) AC ,不开 WA

数组开小(估计是 \(O_2\) 放大空间的关系)

posted @ 2023-10-06 11:30  Biuld  阅读(20)  评论(0编辑  收藏  举报