线段树易错点

1、开线段树的结构体时一定要开到4倍的点的大小;
2、写区间求和时的题目时search()函数的返回值在不再区间里时返回0,而区间求最小值时返999999999,最大值时返回-999999999;(int时)一定要是九个9,不然有些极限数据会卡范围;
3、写修改单个点的值和一个区间的值的函数最好分开,一个是节省时间,还有可以防止代码混乱而出错;
4、Search()&updata()函数中判断区间范围的if语句中l,r和查找的区间a,b的关系容易出错;
5、注意根节点和子节点的关系,特别是+1的问题,归结为一句话就是:若加都加,若不加都不加即:
mid=(l+r);左子树:l~mid(不加一),根为root*2;右子树:r~mid+1(加一了),根为root*2+1(也加一);

6、权值是在边上还是点上,这两种关系代码判断上有不同;
7、结构体赋初值的时候也要注意,根据所求的是最大还是最小还是和来判断;
8、线段树的左端点在数组中的下标一定要是1,而不是0。

posted @ 2017-08-22 09:36  会飞的雅蠛蝶  阅读(199)  评论(0编辑  收藏  举报