zoukankan      html  css  js  c++  java
  • 精选傻X错误 && 自己的套路

    声明

    参考课件由Accelerator汇编

    1. 随手注意的细节

    1. 你写的main 真的是 main 么?

    2. 在无向图或者网络流找反向边的时候,编号 (xor 1) 的前提是,你的第一条边编号是 2或0(推荐是2)。

    3. LL pow(); ......int tmp = pow(2,3);

    4. 别看样例是啥你程序就写啥……有的题目离线做可能更容易(前提是它没有强制在线)

    5. 别写的太快,中间忘了取模

    6. 大括号被省略的前提是,只有一条语句。在写完 for; if 之后一定看看后面是否误打分号

    7. 对于地图题请注意到底什么是 n, 什么是 m, 判断数组越界的时候到底是 n, 还是 m.

    8. 有些题比较坏,读入 2 *n 个数字,这个时候一定要注意数组是否越界。

    9. 不要使用关键字, 奇葩关键字有: next, left, right, count, x1,x2,y1,y2, clock

    10. 建议在判断的时候这样写: if(0 == x)

    11. 在有for(i: n->1)的代码时,注意不要这样: for(int i = n; i >= 1; i++) ,在有for的时候,别这样for(int i = 1; i <- n; i++)

    12. 有返回值的函数,一定要看看有没有return ; 函数写好了,别忘了调用(建议使用gdb-wall)(在IDE中也可以开-wall,这样也能避免,除了你在main函数里或者是全局声明参数却不用时,它才不会warning,其他的...应该会吧, 所以要注意这些。)

    13. 取最小值最大值的题目,如果过程中数据有负的,记得memset成-0x3f3f3f3f

    14. 注意无向图初始化的边数

    15. 如果要求前缀和,而且你又sort,注意别把他们的顺序搞错了

    2 在考场上的时候首先应该注意的

    1. 先看第一页,先看题目叫啥,时空限制,有的题可能时限很长,要好好利用。

    2. 好好计算自己的内存,建议自己sizeof看看(之后记得(double)size/1024/1024),计算内存要计算所有的东西在内,不要认为自己把一个数组卡到了 125M,128M 就没问题了。要努力的计算并测试自己会不会爆栈(现在应该不存在这个东西了)。

    3. 请看好题目中的每一个限制,不要自己少读一个条件被卡的半死不活, 或者主观臆想添加条件

    4. 没人说过第几题是难题……请不要为自己设置障碍。

    5. 你旁边的人键盘敲的响不代表他什么都会的,也可能是什么都不会无聊到爆;你旁边的人看第三题不代表他什么都会的,也可能是在努力的调暴力和骗分;你旁边的人唉声叹气不代表他什么都会的,可能他就是真的不会才叹气。相信自己,调整心态,第三题你不会别人一定也不会,所以要好好写暴力,第三题你会不是说只有你会,所以要好好对拍。

    6. 记得最后把调试信息都注释(建议使用debug函数)。在调试的过程中不用调一个删一个,推荐注释掉。

    3 一些有关知识的问题

    1. 在搜索的时候注意判重,常用的姿势有: 数组直接判断,map 直接判断,直接 Hash,进制转换 Hash,康拓展开 Hash。

    2. 论初始化:多组数据的时候要注意清数组,清图论的 cnt,清变量,但是有的题千万不要每一次把所有的东西 memset 或者 memcpy,要用多少清多少;清图通常只需要清 head 和 cnt指针动态分配变量需要在构造函数中初始化;在二分答案的时候,请注意各种初始化的问题;滚动数组要注意当前维初始化的问题;dp 最小值的时候要注意初始化最大值的问题。

    3. 不下降可以相等,但是上升不可以。这点要看好。

    4. 喜欢 define 的同学请不要乱用,首先,define 的函数传参数不要直接传函数,这样可能会导致反复调用;其次在数据范围的 define,瞎用会GG。如果实在想要用请加上 (),或者改用 const

    5. 取模题不要忘记取模。模数爆 int(为longlong什么的),请写快速加。模数不爆 int,加减乘除之后可就不好说了过程有减法,别忘了转正。(先%再+再%)

    6. 请确定自己是左闭右开还是左闭右闭,在写对应的数据结构或者二分时。
      关于二分答案的姿势,网上有几种不同的写法,这个同学们应当理解,好好掌握一种正确的解法即可

    7. 没说联通不一定联通, 给定区间的时候没说 L < R , 那 L 和 R到底是什么幺蛾子就不好说了,搞不好会全体 RE

    8. 喜欢 dijkstra 的同学请注意否有负环喜欢 spfa 的同学请注意边和点的数量比例

    9. 一些时候涉及到浮点数的输出,要注意精度问题。另外浮点数不能直接判相等,正确的姿势是

      fabs(a-b) < max( max(a,b), 0) * eps

    10. 输出"%" 请用"%%"

    11. 二分答案的时候可能发生 (L+R) 爆 int 的事情

    12. 建议大型题目时时编译调试,把好解决的小问题先解决,这样不会因为小问题而 GG。

    13. 注意自己的排序或者重载小于号,搞清楚逻辑,你写的到底是从小到大还是从大到小。另注意小于号不要实现等于的东西,否则会 RE.

    14. 有的 LL 需要全程开, 但这不意味着你解决了全部的问题,有的时候还会爆掉 long long , 这种问题常会出现在两种二分验证情况下,第一种求和验证问题,如聪明的质检员,对于这种问题的解决方法就是边比较边计算,一旦不合法马上 return false。第二种是求和限制问题如 BZOJ 2527,他
      的合法要求很低但是实际值非常高,我们也不能中途停掉,我们的方法是如果合法那就把值设置在合法上限。

    15. 注意一些数据结构的边界问题,比如树状数组不能维护”0” 的信息,如果需要维护,就要集体 +1.(建议大部分从1开始编号)

    16. 无向图边开二倍!!!

    17. 分解质因数之类的,和质因数有关的操作,一定要好好考虑"1"

    18. 在单调栈和单调队列里, 不要乱r++(比如你要栈里要同时保存值s和位置pos,就不能同时++,要在最后加,
      如果是手写栈, 要注意在新插入元素时,要注意对栈顶的操作,因为可能这的栈顶还保存有值。

    4 文件错误

    自己注意!!!

    不要效仿!!!!

    写代码之前就要先写文件读入输出
    (建议:如果是Win7下的机子,建议打开资源管理器->组织->文件夹和搜索选项->查看, 关闭那个选项:隐藏已知文件类型的扩展名)

    5 Best Solution

    最终忠告:
    暴力就检查两遍,写正解一定要对拍,并测试极限数据
    就算不写对拍也要自己手写较大的自己测一下


  • 相关阅读:
    面试题系列---【watch、methods 和 computed 的区别】
    面试题系列---【vue-router是什么?有哪些路由模式?实现原理是什么】
    面试题系列---【vue中watch原理】
    面试题系列--【解决移动端1px边框问题】
    面试题系列---【vue中assets和static目录的区别】
    面试题系列---【vue中router和route区别】
    面试题系列---【mvvm 和 mvc 区别是什么?哪些场景适合?】
    面试题系列---【接口调不通,如何排查问题?】
    面试题系列---【手写一个Promise】
    JavaScript课程——Day11(BOM,宽高位置属性)
  • 原文地址:https://www.cnblogs.com/tyner/p/11402019.html
Copyright © 2011-2022 走看看