• [总结][待更新]各种错误


    1.多组数据

    (1)没有清空,或把实际需要清空的当成不需要清空

    ①图论f1数组

    ②线段树的标记

    ③各种数据结构要消去内存占用

    ④各种单组数据的时候,因为默认是空的,所以没有初始化的东西

    一定要极其仔细!错了不知道多少次了!!!

    (2)某组数据中少读入了一些数据

    ①判-1之类的东西时,直接跳出循环,没有把剩下数据读完

    2.读入

    (1)读入数据范围接近上限,于是运算过程中超限

    (2)scanf时,double用%lf,float用%f

    printf时,double和float都用%f

    long double不管scanf还是printf都是%Lf,但是实际输入输出中有某种问题,尽量少用

    (3)ios::sync_with_stdio(0)尽量不要用,好像会有概率(玄学?)出问题

    3.排序

    (1)排序某一组数据后,忽略了这组数据的编号已经失去意义,与其他没有排序的数据结合使用

    ①(kdtree) 用了nth_element/sort等,又要求输出编号时,要注意

    4.STL

    (1)设it是一个p类型对象的迭代器,并不能用it==(任意一个p类型对象).end()来判断迭代器是否失效

    5.取模

    (1)快速幂的时候,显然指数不能直接对模数取模

    6.数据范围

    (1)(看错数据范围等原因导致)没有开longlong

    (2)inf不够大或者-inf不够小

    ①在将int改为longlong后没有对应将inf从0x3f3f3f3f改为0x3f3f3f3f3f3f3f3f

    7.对拍

    (1)python高维数组不能用a=[[]]*10000,要用a=[[] for i in range(10000)](不然在a[0]里面append元素,a[1],a[2],a[3],..里面都会有)

    8.c++

    (1)貌似有些编译器上使用某些未初始化变量也不会有提示,还是要自己仔细查一下

    (2)不能为了省事而不同作用变量用同一个变量名,容易出事

    9.强制在线

    (1)忘了做那些异或之类的操作(然而却很容易过样例,对拍时候也容易忘,要小心)

    (2)忘了给lastans赋值(注意因为在做某些特判而有多个可能输出的位置的时候)


    1.图

    (1)有向图判环,自环一定要特判!(不能直接用强连通)

    2.线段树

    (1)数组模拟指针时,节点编号(num)与区间端点(l)搞混

    3.并查集

    (1)带撤销并查集,少备份/还原了东西

    4.细节

    (1)内外层循环误用相同循环变量

    (2)对于一类依赖某种分类方式来达到根号复杂度的方法(比如多字符串,暴力求某些东西,复杂度带的根号),很可能需要去重(不然被卡到$n^2$)

    (3)交程序前一定要记得看一下是否有可能要求手动加上头文件的函数(比如abs,sqrt,没有cmath的话有时候本机AC提交CE),还有C++11记得去掉

    (4)逆元的坑:模数不是质数,一般肯定不会用...

    即使模数已经是质数了,逆元也不是随便用的

    如果涉及到的要求逆元的数大于等于模数,在某些情况下(忘了哪些情况了),要在求逆元前先取模;

    如果涉及到的要求逆元的数大于等于模数,且是模数倍数,那么逆元就不能用了(想想看,如果c=a*(kp)%p,在已知(kp)和c的情况下,显然不能反推出a),尝试先模原模数的一个倍数使得模数达到足够大,输出的时候再对原模数取模(应该是不行的,因为这样的话模数不是质数);尝试用各种特殊方法化简吧(比如这个公式:a/b%c=a%(b*c)/b)。。。

    (想一想可以知道,阶乘逆元/p^k倒是一般都不要紧。。因为要求的n!和p^k,一般n,p都分别小于模数,那么n!和p^k也不可能是模数的倍数(当然要求模数是质数);不过还是要注意)

    (5)对于某些求最优化,有多个关键字的问题,最好不要用pair简化程序,应当手工定义结构体,手工定义比较函数,否则很容易由于pair默认的比较方式而出错

    (6)n,m之类的搞混

    (7)题面很绕,各种搞混

    5.平衡树

    (1)(主要是LCT)取左/右子节点时没有考虑节点上的reverse_tag

    6.字符串

    (1)不等长的串s1,s2满足(按字典序)s1<s2,在s1,s2后分别加入一个字符后不一定仍然满足

    (于是后缀平衡树不能在尾部加入字符)

    7.树上的数据结构

    (1)树剖求重儿子不需要sz[0]=0x3f3f3f3f,点分求重心要

    (2)树剖+线段树,线段树记得判当L>R时互换L,R

    8.数学

    (1)等比数列(n^1+n^2+n^3+...)一类的求和要特判n=1!

    9,dp

    (1)发现dp题数据范围小又搞不出来一定要特意想一想区间dp是否可做


    做题

    1.算错复杂度(因为根本没有仔细算),以为是正解,码很久结果既没有分又把时间用掉了

  • 相关阅读:
    Navicat Premium 12安装及破解(四)
    ajax原理及应用(十六)
    为什么每次下载后必须关闭掉IO流(十五)
    FormData提交文件(十四)
    代理设计模式(三)
    单例模式(二)
    工厂模式(一)
    集采用的验证规则
    java泛型的理解
    spring中如何直接注入session和request对像
  • 原文地址:https://www.cnblogs.com/hehe54321/p/9272804.html
Copyright © 2020-2023  润新知