错误总结
更常见,广泛的错误
WA:
- longlong是否开全
- 数组大小是否过大/过小
- 没有初始化全/边界情况没有考虑/需要多次初始化
- 没删完调试
- 全局变量
n的赋值在某一个函数内写成int n=1;全局中的n没有改变。 - 特殊考虑?n=1?
- 数据编号为 1~n 还是 0~n-1
RE/MLE/其它?
- 把函数类型写错了
- 混淆了几个名字相近的变量
时间/空间/越界问题
一个字符,按字母表的顺序向后移动 \(x\) 位(字母表是一个环)。不能这么写
c+=x;
if(c>'z')
c-=26;
这样可能会越界。
这样是对的:
if(c+x>'z') c+=x-26;
else c+=x;
注意bitset的空间!!。可能会导致错误
写部分分的数组如果比较小,要注意全局变量,公用的那些数组要开到最大。
const ll mod !!!
不用 const 会导致 TLE.
如果你的某一个式子中有x-y,一定注意它是否一直为正。不只是它作为数组下标时要注意,在其他时候可能有特判。比如网络流中,不会有负数限制。这道网络流
在集合中表示元素时,如果标号从1还是,就是1<<(x-1),如果标号从0开始,要注意是1<<x
关于STL:
- 用map或者set的时候 如果你的某一维是自定义结构体,就需要重载运算符。但是注意
map<node,ll>如果你乱写了operator <那么在map去重的时候就会出现问题。
比如你写的是 bool operator<(const node x,const node y){return x.i<y.i;} 而node有i,j两维,那么如果两个node x,y如果x.i==y.i这两个x,y就会被视为一个值
- 用set的时候,注意
upper_bound和lower_bound的使用
// auto st=upper_bound(s.begin(),s.end(),(node){L,0,0});
// auto ed=upper_bound(s.begin(),s.end(),(node){R,0,0});
auto st=s.upper_bound((node){L,0,0});
auto ed=s.upper_bound((node){R,0,0});
注释部分更劣,时间复杂度更高。见这道题的提交记录
其他
回转寿司离散化的时候,设f(x)为x离散化后结果 f(x-y)!=f(x)-f(y)
若题目中有描述“区间赋值”。那么需要注意可能区间赋值为0.如果有懒惰标记lzy,不能仅通过lazy==0来判断要不要下传标记,应该令添加一个flag记录是否被区间覆盖过。
不要用 getchar 代替 scanf("%s",s);
更新最大值,次大值的时候(次小生成树)
不能是
pii upd(pii x,pii y){
if(x.fi!=y.fi) return {max(x.fi,y.fi),min(x.fi,y.fi)};
else return {x.fi,max(x.se,y.se)};
}
正确:
pii upd(pii x,pii y){
if(x.fi!=y.fi) return {max(x.fi,y.fi),max(min(x.fi,y.fi),max(x.se,y.se))};
else return {x.fi,max(x.se,y.se)};
}
循环推进某一个值 \(x\),并记录下 \(x\) 的上一次的值 \(las\)。没有更新 \(las\).
输入空格+字符 不能直接 scanf("%c",c);
各个算法板块
fhqtreap:
维护数组
split(rch(p),rch(lp),rp,s-siz(lch(p))-1);
写成了:
split(rch(p),rch(lp),rp,s-lch(p)-1);
二分图
-
寻找增广路时没有清空vis
-
第二个区域的点的编号没有\(+N\)
斜率优化
while(head<tail&&k(q[head],q[head+1])<=(ld)1.0*K(i))
写成了
while(head<tail&&k(q[head],q[head]+1)<=(ld)1.0*K(i))
是 head<tail 不是 head+1<tail
计算几何
注意两条线段端点相交的情况。
网络流
- 当前弧优化:
for(int i=cur[u];i;i=e[i].nxt){
cur[u]=i;
...
之前一直是错的!! 不是cur=e[i].nxt!!! 有问题的代码,会导致奇怪的TLE
for(int i=cur[i];i;i=e[i].nxt)
树链剖分
ed[1]!=n.ed[i]:i开始的链的底端的dfn
数论板块
inv[0]=1没写,导致计算关于0的组合数有问题。
本文来自博客园,作者:bwartist,转载请注明原文链接:https://www.cnblogs.com/bwartist/p/17650181.html

浙公网安备 33010602011771号