zoukankan      html  css  js  c++  java
  • [笔记] 易错点集合

    1.cena里不能用bits/stdc++.h..... 当然正式考试也不行....
    2.不要弄反#ifdef 和 #ifndef .....
    3.取模优化原本是这么写的
    if(x>=mod) x-=mod;
    实际上要这么写:
    while(x>=mod) x-=mod;
    然后我也不知道有没有起到优化的作用 .....
    4.考虑方案选择数相关dp问题时(比如组合数),0有关状态算不算一个方案(比如选0个)
    5.乘法可能会爆int的情况下,使用如下代码:
    1ll*a*b; (a,b>=1000,000,000)
    6.define时若胡乱操作会出问题比如:
    #define ml(x) 1<<x
    而正确操作如下:
    #define ml(x) (1<<(x))
    以及等等一些错误操作。

    7.高精度计算时注意值为0情况,不能有-0或者长度为0(不输出)的这种智熄操作出现
    8.线段树要开4倍原数组大小,树链剖分时不要太吝惜内存,仔细分析数组边界情况和内存使用情况,避免RE/MLE
    9.ST表时请注意两重循环的时候

        for(j=1 to 20)
            for(i=1 to n) -> 这重循环,请加上i+(1<<(j-1))<=n的判断,避免越界
    

    10.打完暴力看看搜索是否有后效性,参数是否简洁;考虑记忆化搜索有大机率变成正解
    11.涉及位运算和逻辑表达式计算请打上括号.....
    12.时间复杂度的考虑上,「先考虑线性」、再才考虑贪心、倍增、最后再考虑数据结构等一系列骚操作......
    13.dp滚动数组优化时,请确定把滚动数组清干净.....
    14.作这种比较时:
    if(a[i]==a[i+1]) ...
    请注意i+1有没有越界....

    以上是个人不怎么犯的错误
    下面是正片

    1.请注意题目求的是最大值还是最小值

    2.dp无从下手的时候,试着把题目要枚举的条件变为已知放入状态中

    3.dp时一定要初始化!!尤其是不可能出现的状态,一定要注意!!

    4.dp时初始化好了真的是可以为所欲为的

    5.没有这种操作:a+b>a'+b' => a+sqrt(b)>a'+sqrt(b')

    6.当要对某个巨大数组清空时,尝试将“全部清空”改为“清空自己需要清空的元素”,可能会使效率提升。

    7.若a和b都已对k取模,此时(a-b)%k的值可能低于0。若要大于0则改为(a-b+k)%k,但同时应该注意运算溢出的情况。

    8.常数玄学:在函数内进行操作,并且函数的调用过程中参数含缩窄转换,可能会造成巨大常数。如定义变量long long a;,使用函数void fun(int x){ ... },进行如下的调用:fun(a);——实测1e5数据范围下产生的效率差距超过4倍

    9.floyd请一定要弄清楚是f[i][i]=0,还是f[i][i]=INF建议忽略松弛中有点相同的情况.....

    10.对于非常规最短路问题,建议先考虑使用什么算法,再考虑要不要建图。不少题目直接对算法进行活用,而不需要多余的建图过程。例题:LuoguP1875,LuoguP1119

    11.st表初始化的边界问题....

    for(int j=1;j<20;j++)
        for(int i=1;i+(1<<j)-1<=n;i++)
            { ... }
    

    12.维护两个滑动窗口单调队列时,请注意数组绝对不要弄混。比如更新B队列时更新了A队列的pos.....

    13.清空邻接表时,重置head、next数组和目前指针p
    memset(head,0,sizeof(head)), memset(next,0,sizeof(next)), p=1

    14.打ISAP时,找相邻点的层次最小值,请一定判断该点的层次最小值是不是变成了-1......

    15.关闭ios同步之后请 一定 不要用scanf,否则会出现段错误/诡异输出等玄学错误....

    16.犯了如下的窒息操作:

    int n;
    const int s=1,t=n;
    

    正确操作:

    int n,s,t;
     ...
    int main() {
        cin>>n;
        s=1,t=n;
        ...
    }
    

    17.Treap/SBT:cnt++后记得updata(x)啊.... 插入后记得rotate啊.....

    18.坐标类变量,不要用i/j来表示,那是作死....

  • 相关阅读:
    C# 文件操作 全收录 追加、拷贝、删除、移动文件、创建目录、递归删除文件夹及文件....
    FlexPaper在线文档分享(转载)
    winform中屏蔽对标题栏的操作
    【转】海量数据查询优化
    [转帖]用Reflector和FileDisassembler配合反编译.net Windows程序
    关于中缀表达式和逆波兰表达式(终结篇)
    jQuery教程基础篇之强大的选择器(层次选择器)
    模版方法(Template Method)
    VS2008新建项目时出现“此安装不支持该项目类型”
    并行计算相关文章
  • 原文地址:https://www.cnblogs.com/acxblog/p/7766367.html
Copyright © 2011-2022 走看看