写在前面

写下来自己犯下的所有错误,以便以后减少程序Debug的时间……

  1. 邻接表存储的时候存下的是和这个点相邻的边,并不是一条连通的路。

  2. 用邻接表下标 i 做为其他的数组下标操作。

  3. 堆的比较方式是相反的。

  4. 第二重循环要用j ,并且千万记得不要出现声明 j却变成 i++:

  5. 在用memset的时候,头文件#include一定要加上。

  6. 用完文件输入输出,在OJ上提交程序的时候要注释掉文件输入输出。

  7. 在使用getchar()读入的时候记得将下面开启同步语句关闭:

1
ios::sync_with_stdio(false);
  1. 当在递归重新声明一个数组变量的时候,数组变量不会清空,而会是你上次记录的值,需要重新归零(其实是地址还没有变化QAQ)。

  2. 递归传递数组(只在数组上面发现了)的值的时候,一旦改变,那么再返回到上一层的时候,上一层的值也会是改变的,所以最好的方法就是再次在递归当层进行声明一个数组,然后对这个数组进行赋值操作。或者是在开一维数组,把全部的都记录下来!

  3. string类型的处理速度非常慢非常慢,如果遇到了需要用string处理,而且数据量是比较大的,那么我们就直接使用字符数组char[],这样无论是空间还是时间,性价比都是很高的。

  4. 在进行求联通分量的时候,需要访问每一个元素,因为图有可能不是联通的!

  5. 使用快读的时候,一定要记得返回读入;

  6. 写线段树的时候记得判断Left和Right的范围要重点检查!

  7. 树状数组读入的时候一定要记得坐标+1(不能有零)

  8. 在写线段树的时候,在改变值的时候a[Root]是根据外面要求修改的值去更新的,而不是Lazy标记。

  9. 线段树更新的时候,如果有多个变量(+ - * / & ^ % | << >>)的时候,如果更新懒标记和a[Root]的值,其他的懒标记也需要进行相应的计算。

  10. 线段树懒标记在下传的时候是根据Root的值去更新Root2和Root2+1的,尤其是a[Root2]和a[Root2+1]的懒标记里面的值已经在之前更新过自己了,所以说在传递的时候是由新增加的Root的懒标记去更新的!

  11. 在使用if语句的时候记得两个等号。

  12. 在函数里面声明变量是需要附上初值的,不然为随机数 (应该是)

  13. 在套用模板的时候,记得检查所有的东西是否符合模板的计算要求,比如边界值,变量名称等等!

  14. 在存入图的边的时候,题目里面很有可能有重边。

  15. 在费用流的时候,建图一定要记得在费用是一个正的一个负的。

  16. 网络流一定要首先静态检查一遍,然后再打表建图,然后再次检查模板。