[总结]错误总结
什么**错误啊都是
不够『数据删除』的错误我都不会犯好吧
现在算是半个机房火草和ty的错误集合了。
-
多个函数传参数时注意传参顺序。
-
警惕伪装成 \(while\) 的 \(for\) 循环。
例:
int l=...,r; for (r=1;r<=l;r++);
-
数据结构题(如线段树)数组要至少开到 \(n\) 的 \(4\) 倍。
\(update\) \(2022.11.3\) YZJ
-
\(NTT\) 模数不能是 \(1e9+7\) ,推荐 \(998244353\) (原根为 \(3\) 、 \(114514\) ),选择模数时注意是否满足性质。
-
需要取模的题在进行加法和乘法时都要取模。
\(update\) \(2022.8.26\) @tytyty 写代码有一句没取模导致 Caii 延迟下班 \(20\) \(min\) ,警钟长鸣。
-
提交时记得删除调试语句。
-
变量值在运算中可能改变(废话),所以如果在同一循环/函数中需要多次调用变量值,务必新定义其他变量来储存(运算)。
-
在进行多重循环时警惕以下情况:(都犯过两次了,wtcl)
For i:1->N;++i For j:1->N;++i
\(update\) \(2022.8.8\) ++;
-
取模时注意符号(是 \(\%p\) 不是 \(*p\) ),离大谱。
-
"\(!\)"(“非”运算)和三目运算符优先级都非常高,在有多个运算同时进行时务必加上括号。
-
其实是可以相信 \(double\) (浮点)类型的。
-
本地不编译就提交,必寄。
-
四个小时的考试花三个小时在签到题上,必寄。
-
变量、数组和函数名不能与库中已有函数名冲突,否则必寄。
-
加号减号不要弄反,服了。
-
在你谷读入单个 \(char\) 类型的变量时不要用 \(getchar()\) 直接 \(cin\) ,用 \(getchar\) 会出现神奇的错误(如 \(100\) \(pts\) \(\to\) \(0\) \(pts\))。
-
注意题目中指定的模数(@世界上第一可爱的OccDreamer在写题时把题目中指定的 \(998244353\) 写成了(默认成了) \(10000007\))。
\(update\) \(2022.7.14\) 又写错了。
\(update\) \(2022.11.5\) 为什么有出题人用 \(993244853\) 做模数?!!!
-
变量、数组名尽量定义地清楚易懂,不然可能过了 \(5\) \(mins\) 后就不知道啥是啥了/kk
-
用 \(memset\) 时要注意是:
memset(a,0,sizeof(a))
;
而不是:memset(a,0,sizeof(0));
。\(update\) \(2022.10.14\)
memset(deep,-1,sizeof -1);
-
数组大小要合适(@世界上最最最最最最可爱的tytyty在改题时数组开小了改了 \(1h\) )。
\(update\) \(2022.8.1\) ty又写小了。
\(update\) \(2022.8.2\) ty&我又写小了。
\(update\) \(2022.8.2\) ty&我又写小了。
\(update\) \(2022.8.3\) 我又写小了。
\(update\) \(2022.8.24\) 我写小了改了 \(2\) \(days\)。
\(update\) \(2022.9.1\) 写P4103 [HEOI2014] 大工程开小了 \(10\) 倍,TLE(? 了三发提交。
\(update\) \(2022.9.3\) ty开小了调了\(4h\)。
\(update\) \(2022.9.17\) ty开小痛失 \(50\) \(pts\)。
\(update\) \(2022.9.27\) 用了 \(8e5\) 的数组结果只开了 \(4e5\) ,警钟敲烂。
\(update\) \(2022.10.7\) \(P1018\) 开小十倍喜提 \(90\) \(pts\)。
\(update\) \(2022.11.9\) 考试开小十倍怒挂 \(80\) \(pts\) 。
-
@0ccDreamer 小姐写并查集按秩合并没判断两个点是否在同一连通块。
\(update\) \(20220908\) @OccDreamer 同上。 -
&&
写成&
。 -
注意链式前向星是否重复连边(@世界上最最最最最最可爱的tytyty重复连边改了 \(0.5h\) )。
-
@世界上最最最最最最可爱的tytyty写 \(char\) 类型函数没写返回值调了一晚上+一早上。
-
多个函数用了同一个变量没有置零,调了一晚上+一早上。
-
写这道题时:
dp[x][S]==dp[x][subs]+dp[x][subs]-a[x]
(正解:
dp[x][S]==dp[x][subs]+dp[x][S^subs]-a[x]
) -
一张图说明了所有:
图片寄了不想修复就这样吧。
-
不开 \(long\) \(long\) 见祖宗。
-
极大值最好是 \(long\) \(long\) 下 \(1e18\) ,或者 \(1145141919810\) ,别用 \(1145141919\)。
-
queue<node> q1,q2; struct node {...};
-
@世界上最最最最最最可爱的tytyty手写队列:
while(!(h1<=t1)||!(h2<=t2)) ... h1=...,t1=0,h2=...,h2=...
然后:
h1=1,t1=0,h2=1,t2=0; ... q1[t1++]=...,q2[t2++]=...
-
不要把输入写到文件后面!!!
-
for (int i=head[x];i;e[x].nxt)
正解:
for (int i=head[x];i;i=e[i].nxt)
-
为什么我手写快读比 \(scanf\) 还慢???
-
要区分费用流和最小割啊。
-
写网络流的时候链式前向星要从 \(2\) 开始编号( \(tot\) 初始化为 \(1\))
-
写费用流时最好将 \(head\) 初始化为 \(-1\) ,同时在 \(spfa\) 时注意边界条件!
例:
for (int i=head[x];i!=-1;i=net[i])
而不是:
for (int i=head[x];i;i=net[i])
-
数组开小RE,数组开小跑不出函数。
-
写最小割:
if (deep[v]=-1&&worth[i])
,服气,不要把相等写成赋值!!!(调了小半个上午) -
写数学时注意式子的符号 @tytyty 。
-
写树剖:
if (!deep[y]) {deep[x]=deep[x]+1;...}
写P4103 [HEOI2014] 大工程的 \(rebuild\) 函数时没把选择的点入栈。
-
用 long long 统计答案,累加时没有乘
1LL
。结果:
-
突然想起之前 @tytyty 多组数据清空数组的时候把原图全部清了。
-
多测不清空必寄!!!!!!
-
不写快读,寄!!!!!!!
-
怎么会有人都高一了还不开文件啊!!!!!!!!!!!!!!
-
循环查找答案找到不break de了约 \(30min\) 。
-
当你发现算法没问题数组开得对语句也没有上述的所有错误的时候,为什么你不能想一下是不是你的输入函数写错了呢?因为这个调了一个下午和小半个晚一。
\(update\) \(2022.10.11\) 调了半个晚二。
-
注意输入格式。
-
考试时 \(n\le 10^{1000}\) ,@Mr_Avalan 写压位高精压五位,怒开数组
int a[105],b[105]
。 -
@Mr_Avalan : 桶要开到值域大小。
-
尽量不要用
exit(0);
。 -
@YangZJ :
freopen("xxx,in","r",stdin);
。 -
@tytyty :
int read() {
int x=0,f=1;char ch=getchar();
for(;ch<'0'||ch>'9';ch=getchar()) if(ch=='-') **f=-1;**
for(;ch>='0'&&ch<='9';ch=getchar()) x=(x<<1)+(x<<3)+ch-'0';
return **x**;
}
-
@tytyty : 高斯消元不用临时变量存主元导致其变成一堆东西乘/除 1 。
-
@tytyty : 警惕写线段树在赋值标记上做加法。
-
并查集:
for (int i=1;i<=n;++i) f[i]=1;
-
CSP-S 没开文件见祖宗!!!!!!
-
@tytyty : 网络流,当前弧优化,改到 bfs 里去了。
-
@tytyty : 快读又写错了。
-
快读错了。
-
把多个函数名与函数本身搞混了。
-
网络流板子要固定。
-
怎么会有人写快读
return 0;
啊。 -
注意运算顺序,在有位运算的时候务必加上括号。
-
注意题目中是要建双向边还是单向边。
-
虚空debug:写线性带悔贪心挎的环形带悔贪心的代码结果忘记把环变成线了。
-
写二分时不要
#define mid ((l+r)>>1)
。 -
写树链剖分时注意谁是谁儿子谁是谁祖先。
-