![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
线段树
明天去哪
博观而约取,厚积而薄发.每天坚持写代码
展开
-
poj 3468线段树延迟更新
这个代码bu #include #include #include #include #include #include #include #include #include #include typedef long long LL; const int MAX=0xfffffff; using namespace std; const int mx=100010;原创 2014-08-13 00:16:21 · 406 阅读 · 0 评论 -
poj2828 Buy Tickets线段树
//poj 2828 #include #include #include #include #include using namespace std; const int MAX=0xfffffff; const int mx=200020; class node { public: int l,r,res; }tree[mx*4]; class NUM{ p原创 2014-08-25 19:59:41 · 441 阅读 · 0 评论 -
线段树(一)单点更新,区间查询
hdu 1394 (1)线段树的pushup函数,应该放在查询完左右区间之后,注意,建树过程中也不能省略push。 (2)线段树的叶子节点的左右l,r必须为[1,n]之间的数,不能为[0,n-1],会发生程序崩溃。原创 2015-08-10 10:34:21 · 396 阅读 · 0 评论 -
线段树(二)区间更新
hdu 1698 调试了很久,没想到一次ac了。 注意:区间更新中用到一种技术,延迟更新pushdown(v)。如果不使用延迟更新,而一个个的更新,长度为n的区间更新需要nlogn,而数组直接更新只需要n。体现不出线段树的优势,容易超时。 需要注意的另一点,建树的时候所有节点的状态都要考虑好,由于我做这题时,没有考虑好内节点的状态,导致样例跑出23的结果。这发代码可以当做模板来用。 区间更原创 2015-08-10 14:55:52 · 410 阅读 · 0 评论 -
线段树(二)区间更新补充
区间更新中会有两个函数 pushup(),向上更新函数, 用处:(1)建树的时候使用(2)更新的时候也要使用,因为靠上的点可能没有在pushdown中更新到 pushdown函数,向下更新函数,通常更新add等 用处:(1)更新update时用到,进行add和sum增量的更新,(2)query时,作用同上 注意:(1)query的时候是否必须需要pushup()这个问题我还没有搞清楚,,原创 2015-08-10 15:55:10 · 354 阅读 · 0 评论