码迷,mamicode.com
首页 > 其他好文 > 详细

审题习惯 && debug习惯

时间:2019-10-08 12:25:51      阅读:91      评论:0      收藏:0      [点我收藏+]

标签:top   ==   scanf   反向   debug   网络   min   初始化   赋值   

做题习惯

  • 静态查错一遍后再测样例
  • 读double型的变量尽量用scanf
  • (int)r * 1000 应写成(int) (r * 1000)
  • 开新题之前,检查这一题的输出格式/数据范围会不会爆long long

    对于极端“小数据”

  • 矩阵乘法的时候注意考虑初始化的那几个值,特判输出。

    对于取模

  • 做了减法之后取模一定要while(ans<0)ans+=mod;
  • 你读入一个数,若它已经超过模数,直接模!别回头!,ksm的a和k都是可以直接模的
  • 题目要求模一个数的时候看清楚模的是不是质数
  • 除法一定不能取模,要化简公式或者乘逆元

    对于数组的初始化和long long

  • 如果判断-1的条件是 (某某==0x3f3f3f3f)千万不要开long long
  • 看到负数就要考虑数组的初始化,如sum[]等不用求max/min的数组就不需要,而保存最值的要填充0x3f/-0x3f

    对于建边的关系

  • 有重边会对答案有影响吗
  • u>v 会对答案有影响吗 swap 你值得拥有吗

对于边界

  • 在搜索中,如何转化边界进行巧解
  • 在while(x)的时候一定要考虑x==0怎么办,不然,呵,你会debug很久很久

调试了很久都会出错的

  • 树剖里写所有有关线段树的操作都要写id[x]而不是x!新图已经建好了!
  • 字符串的最后一位可能是‘ ’,注意一下。
  • 多组数据初始化

常见编译错误

  • segmentation fault 你很可能是没有把数组开够………………
  • 用vector TLE的话可能需要reserve一下
    v.reserve(100010),etc.

错题本

  • 用STL的容器时,必须先询问s.size(),要不然直接询问比如栈的s.top() 会爆(详见双栈排序)
  • memset不能给double类型数组赋初值(详见借教室)
  • memset可以给struct整体赋值
  • 在网络流中,若加边双向边,须使用 ^ 操作,所以tot(边数)一开始要赋值一个奇数(反向正向边)
  • 在差分约束中,SPFA一定要从0点开始.要不然图可能不连通(建一个超级源点0,向每个点连一条长度为0的边)
  • 在差分约束中,跑最长路是为了找环
  • 在差分约束中,形如a-b>=c的两边同乘-1得到b-a<=-c,即a+(-c)>=b,建图即可.
  • 对于差分约束系统来说,建议先无脑比题目中的点数多开个十来倍,因为差分约束系统经常会需要增加一些奇奇怪怪的条件(比如>=0)和辅助边

审题习惯 && debug习惯

标签:top   ==   scanf   反向   debug   网络   min   初始化   赋值   

原文地址:https://www.cnblogs.com/sjsjsj-minus-Si/p/11634633.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!