Loading web-font TeX/Math/Italic

错误总结

更常见,广泛的错误

WA:

  1. longlong是否开全
  2. 数组大小是否过大/过小
  3. 没有初始化全/边界情况没有考虑/需要多次初始化
  4. 没删完调试
  5. 全局变量n的赋值在某一个函数内写成int n=1;全局中的n没有改变。
  6. 特殊考虑?n=1?
  7. 数据编号为 1~n 还是 0~n-1

RE/MLE/其它?

  1. 把函数类型写错了
  2. 混淆了几个名字相近的变量

时间/空间/越界问题

一个字符,按字母表的顺序向后移动 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_boundlower_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);


二分图

  1. 寻找增广路时没有清空vis

  2. 第二个区域的点的编号没有+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的组合数有问题。

posted @   bwartist  阅读(9)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示