zoukankan      html  css  js  c++  java
  • 编程细节总结(不定期更新)

    最近总是犯一些奇奇怪怪的小错误,忍无可忍,总结如下(不定期更新,看我的犯错频率了qwq)。

    1.线段树初始化尽量将所有参数初始化好(留下个add没初始化,出了问题半天查不出来)。

    2.树剖中,两点往上跳时交换两点顺序的条件不是基于两点本身深度的比较,而是基于两点所在链顶点深度的比较(调了三个晚上,看了以前的程序才发现问题)。传送门

    3.二分图匹配,如果用网络流解决,记得几个数组都要开n+m大小

    4.Treap初始化过程中结点size要初始化为1(不是0);pushup维护size时是左右size之和+1(不是左右size之和,与线段树混淆)。

    5.离散化与线段树搭配时,注意线段树下标对应的是离散化后的下标,不要转换两次又回去了(尽管是不容易犯的错误,但是我还是犯了)。传送门

    6.用treap维护序列时,如果要O(logn)计算某个结点在treap中的排名,当然要维护每个结点的父亲,如果题目同时要求有翻转操作,那么每次算排名记得先从上至下push_down一次,再向上找到父亲结点。

    7.Dijkstra的写法:不要从priority_queue中取出d后再更新dist,而应该塞进去的时候就更新,不然不仅常数大,而且复杂度会有问题:大概从O(mlogm)变成了O(mlog(nm))?几乎翻了个倍。

    8.sort函数的cmp函数的写法:int cmp(int x,int y){return x<y;}或者return x-y;反正无论如何不能写return x<=y;!!!原因不是特别清楚,某位大佬说是因为这样没办法定义!=,要么大于要么小于。此外,这样不仅导致TLE,还会RE。

    9.图论:如果建图发现一个点只有有限种状态,而且直接建图不方便解决(比如成环不好处理),那么就把每个点拆开建状态图,有时有奇效^_^。传送门

  • 相关阅读:
    最长公共子序列解题报告
    数列操作问题
    数字金字塔解题报告
    Formiko总结整数十进制转换二进制原理
    程序设计竞赛问题类型
    vue 的生命周期
    小程序 瀑布流布局(图-视频)
    JavaScript语言里判断一个整数是偶数还是奇数,并输出判断结果
    JavaScript语言里判断一个整数,属于哪个范围:大于0;小于0;等于0
    test
  • 原文地址:https://www.cnblogs.com/xuzihanllaa/p/7881870.html
Copyright © 2011-2022 走看看