• 赛前必看的注意点(持续更新)


    本博客用来记录遇到各种比赛遇到的各种问题,以此来警醒自己不要再次犯错,绝赞持续更新中;(另外,为什么我很严肃的写的这篇博客,内容读起来会这么搞笑啊,果真都弱智错误)

    心态

    看到一个似乎很难的题没什么思路,千万不要有“完了,这估计又是要用什么我不会的知识来做”的想法。因为这样的想法不会帮助你做出难题,但确实会让你做不出来或很晚才做出本应做出来的简单题。

    把暴力简化是都能想到的思路,但有时候简化了却做不了/不好做的不如往暴力了想一想,例如2020ccpc绵阳G在注意到%3等价的性质后,其实就可以直接暴搜了,如果继续选择人脑讨论的话其实反而容易错。

    debug

    肉眼debug有时是个好的选择;

    dbeug千万不能急!尤其当你手造出一个错误用例,十分激动就去改,然后改完了发现原来能过的样例过不了了(这还是好的),更糟的是,你改过了这个样例,原来的样例也依然ok,但可能其实刚找到的这个错误样例背后对应着一大类复杂、有一般性的用例,而你只相当于把它特判掉了,这就很糟糕,甚至增大了debug的难度。总之,想很清楚了再去改,不要对着错误用例改程序,对着程序改程序!

    常见写炸原因

    初始化问题,包括但不限于:

    滥用memset导致T次memset带来的TLE。

    写下(memset(a,0,sizeof(node)))的离谱语句,之中(a)是一个(node)结构体的数组;

    初始化语句位置奇怪,比如把刚刚预处理得到的数据初始化没了;

    初始化范围不对,尤其要注意按(n)(m)初始化的话,对应值域是否真的在(n,m)之内。例如2020CCPC绵阳J题数据范围是(n,m leq 10^5)(x_i,t_i leq 10^5),当做(t_i leq m)进行初始化就疯狂WA而且很难查出(也是CF惯的,一般CF这种题范围就会是(t_i leq m));

    排序问题,包括但不限于:

    因为样例里都是排好序的,就忘记写sort了;

    有两个数组需要排序,只排序了一个(2020ccpc绵阳热身A);

    排序语句位置奇怪,比如先排序再求前缀和写成了先求前缀和再排序(2020ccpc绵阳热身B......);

    排序数组的长度别弄错了,比如(sort(a+1,a+1+n))写顺手了,但有时其实是(sort(a+1,a+1+m))或者(sort(a+1,a+1+(n-1))),这个出错了同样很难查;

    数学相关问题,包括但不限于:

    忘记取模!忘记取模!忘记取模!

    小心使用组合数时上比下大、出现负值的情况。

    其他问题,包括但不限于:

    注意边界情况,尤其是区域赛不会像CF那样自动帮你在数据范围里忽略一些边界情况,例如(n)取0、1、2时和各变量取0时;

    注意输入是否写反了,比如输入(n,m),被写成了读入(m,n),而碰巧还因为样例就是(n==m)的而过样例了,注意所有样例中相等的变量都要小心检查,程序主体里也要注意;

    枚举一些量的时候注意范围,尤其是边界,比如枚举应该枚举([0,n])时错误枚举了([1,n]),如CF1475D在枚举拿多少个普通app的时候范围就应该是([0,n])

  • 相关阅读:
    写代码如坐禅:你是哪一类程序员
    关于鸿蒙的商业讨论
    为什么你总是“把天聊死”?
    生活不易,唯有努力
    如何用一句话激怒一名程序员?
    华为正式开源方舟编译器,开源了,它真的开源了!
    为什么HTTPS比HTTP更安全?
    《管理者必读12篇》购买方法
    程序员都在用的电脑小技巧,看一遍就学会,每天早下班一小时
    一位程序员的一天工作清单:5:30下班,5:30起床
  • 原文地址:https://www.cnblogs.com/fried-chicken/p/13914406.html
Copyright © 2020-2023  润新知