你的 bug!
写在前面
写下来自己犯下的所有错误,以便以后减少程序Debug的时间……
邻接表存储的时候存下的是和这个点相邻的边,并不是一条连通的路。
用邻接表下标 i 做为其他的数组下标操作。
堆的比较方式是相反的。
第二重循环要用j ,并且千万记得不要出现声明 j却变成 i++:
在用memset的时候,头文件#include
一定要加上。 用完文件输入输出,在OJ上提交程序的时候要注释掉文件输入输出。
在使用getchar()读入的时候记得将下面开启同步语句关闭:
1 | ios::sync_with_stdio(false); |
当在递归重新声明一个数组变量的时候,数组变量不会清空,而会是你上次记录的值,需要重新归零(其实是地址还没有变化QAQ)。
递归传递数组(只在数组上面发现了)的值的时候,一旦改变,那么再返回到上一层的时候,上一层的值也会是改变的,所以最好的方法就是再次在递归当层进行声明一个数组,然后对这个数组进行赋值操作。或者是在开一维数组,把全部的都记录下来!
string类型的处理速度非常慢非常慢,如果遇到了需要用string处理,而且数据量是比较大的,那么我们就直接使用字符数组char[],这样无论是空间还是时间,性价比都是很高的。
在进行求联通分量的时候,需要访问每一个元素,因为图有可能不是联通的!
使用快读的时候,一定要记得返回读入;
写线段树的时候记得判断Left和Right的范围要重点检查!
树状数组读入的时候一定要记得坐标+1(不能有零)
在写线段树的时候,在改变值的时候a[Root]是根据外面要求修改的值去更新的,而不是Lazy标记。
线段树更新的时候,如果有多个变量(+ - * / & ^ % | << >>)的时候,如果更新懒标记和a[Root]的值,其他的懒标记也需要进行相应的计算。
线段树懒标记在下传的时候是根据Root的值去更新Root2和Root2+1的,尤其是a[Root2]和a[Root2+1]的懒标记里面的值已经在之前更新过自己了,所以说在传递的时候是由新增加的Root的懒标记去更新的!
在使用if语句的时候记得两个等号。
在函数里面声明变量是需要附上初值的,不然为随机数
(应该是)在套用模板的时候,记得检查所有的东西是否符合模板的计算要求,比如边界值,变量名称等等!
在存入图的边的时候,题目里面很有可能有重边。
在费用流的时候,建图一定要记得在费用是一个正的一个负的。
网络流一定要首先静态检查一遍,然后再打表建图,然后再次检查模板。