加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

易错点集合

发布时间:2020-12-14 04:21:35 所属栏目:大数据 来源:网络整理
导读:??? 这个随笔主要是记录一下做题过程中的易错点。 ??? 1.memset只能初始化0或者-1. ??? 2.数组大小还是得准确计算,不要为了大小为1的差距而爆0了。 ??? 3.lowbit(0)=0. ??? 4. g c d ( F [ n ] , F [ m ] ) = F [ g c d ( n , m ) ],不等价于gcd(F[n]%mod,

??? 这个随笔主要是记录一下做题过程中的易错点。

??? 1.memset只能初始化0或者-1.

??? 2.数组大小还是得准确计算,不要为了大小为1的差距而爆0了。

??? 3.lowbit(0)=0.

??? 4.gcd(F[n],F[m])=F[gcd(n,m)],不等价于gcd(F[n]%mod,F[M]%mod)。

??? 5.关于tarjan:

??? 邻接链表:

for(int i=head[u];i;i=edge[i].next){
    int v=edge[i].to;
    if(!dfn[v]){
    .........
    }
    else
    if(vis[v]){
     ........
     }
}

??? 可以看出,这里是在先判断有连边再判断dfn的。

??? 邻接矩阵:

    for(register int v=1;v<=n;v++){
        if(a[u][v]){
        if(!dfn[v]){不能写成if(!dfn[v]&&a[u][v])
        tarjan(v);因为它得先判断a[u][v]有路径再去判断vis[v]
        low[u]=min(low[u],low[v]);
        }
        else
        if(vis[v])
        low[u]=min(low[u],dfn[v]);
        }
    }

这个错误,我找了好久,以后遇到类似的邻接链表转邻接矩阵不能再犯错了!

?6.三目运算符:pre[i]==-1?0:1;不能写成pre[i]=-1?0:1;!!!一定不能写成等号,编译器不报错。

?7.数组大小:如果const int N=???,int A[N],然后再for(i=1;i<=N;i++),这样数组就越界了!!因为A[N]这个空间是没有开辟的。

?8.一道题目如果想不出方法,可以选择(分类)或者(先思考出简化版的算法),如果选择了分类的话,最后一定要思考一下分的类能不能合并!

?这样可以简化代码,避免找错时间过长。

?9.在一些有关图的题目中,如果题目没有明确,这个图是个树,遍历的时候一定不能只从一个点开始遍历!!因为它们有可能不连通!!

?10.已知矩形的3个点求第四个点的时候所用公式:

x4=x3+x1-x2;

y4=y3+y1-y2;

要保证在(x2,y2)处的角为直角,要考虑斜的矩形!!!

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读