zoukankan      html  css  js  c++  java
  • 代码低级错误总结

    1、lca预处理dfs中,1~20顺序枚举,而非倒序。

    void dfs(int x,int fa){/** f,dep */
        f[0][x]=fa;d[x]=d[fa]+1;
        for(int i=18;i>=0;--i)f[i][x]=f[i-1][f[i-1][x]];
        qxs(){dfs(v,x);}
    }
    View Code
    void dfs(int x,int fa){/** f,dep */
        f[0][x]=fa;d[x]=d[fa]+1;
        F(i,1,18)f[i][x]=f[i-1][f[i-1][x]];
        qxs(){dfs(v,x);}
    }
    View Code

    2、线段树忘记下传懒标记

    3、三目运算符优先级很低,?,:左右要加括号。下面代码中不加括号的话0和ask会连起来,作为上一个“:”后面的语句。

    (l<=z?ask(x<<1,l,r):0)+(r>z?ask(x<<1|1,l,r):0);
    View Code

    4、判断了节点在子树内部,在字数外面,还要判断是他自己。

     5、取模优化错了。有一个地方有减法,忘了+mod,出负数了。有减法的地方一定要+mod

    5、主席树ask:if(l==r)return 1

           正确:return sz[]

    6、数组开小。枚举全部区间是n^2的,开了n的。

    7、memset 、memcpy :不写sizeof,直接写长度,要注意字节长度。

     一是bool,char是一个字节,二是define int LL 后,注意4字节变8字节。

      没有必要,尽量不要用。

    8、1e6个1e15相加,爆LL

    9、原:

    for(int i=1,j=1;i<=top&&a[i]<=n;++i){
            if(a[i]!=a[i+1]){
                ++ans[j];--ans[0];
                j=1;
            }
            else ++j;
        }
    View Code

    现:

        for(int i=1,j=1;i<=top&&sta[i]<=n;++i){
            if(sta[i]!=sta[i+1]){
                ++ans[j];--ans[0];
                j=1;
            }
            else ++j;
        }
    View Code

    数组名打错了。改了6个字多了80分。考试三小时改题5分钟。我真是改题大神。

    10、ans没有清空为0。相当于多测了。

    while(m--){
            int lmt=read();ans=0;
            dfs(1,0,lmt);printf("%d
    ",ans);
        }
    View Code

     11、变量名写错,意义搞混。

    所以改题的时候要仔细想想,打完查一遍。

    之前一个变量写错了,改完一个地方忘了改另一个地方。

    i->w

    if(w%j==0){
                    U[j].push_back(u);V[j].push_back(v);
                    if(j*j!=i){
                        U[w/j].push_back(u);V[w/j].push_back(v);
                    }
                }
    View Code
    if(w%j==0){
                    U[j].push_back(u);V[j].push_back(v);
                    if(j*j!=w){
                        U[w/j].push_back(u);V[w/j].push_back(v);
                    }
                }
    View Code

     有一个很大的问题是写的时候不想变量含义,凭感觉写。

    这是非常不好的习惯。要去想含义。

    12、离散化以后树状数组的下标传入离散化前的值。

    因为记住贡献要加离散前的,然后顺手给下标也变成离散前的了,

    TLE60变成RE10。算是变量含义没想清楚。

    13、区间DP没有DP起点>n的部分。

    >n的部分会被前面<=n的部分利用,也要DP。

    背景:简单模板题
    原因:1、细节打错
         2、无法对拍
    方法:
    1、输出过程量,替代对拍。
    2、打时、检查时,想运行方式。

    14、支持回溯并查集不能路径压缩。

     15、变量名uvxy用混。(树上暴力。)

  • 相关阅读:
    思考问题的方法
    专注于工作以及工作相关的技术
    优化的思想
    Web开发基础之问 20130505
    外企一线开发经理的核心竞争力
    你说的话算不算数?
    不抱怨的世界
    欲立庙堂,先立栋梁
    ASP.NET 高级程序设计学习笔记 20130505
    function在forn表单中方法报错的解决方法
  • 原文地址:https://www.cnblogs.com/seamtn/p/11586873.html
Copyright © 2011-2022 走看看