![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
线段树
小狐狸jun
菜鸟飞呀飞~
展开
-
hdu1754线段树入门
题意:给出N个数,然后M个操作,操作又Q和U2种,Q A B 代表 询问A-B之间的最大值,U A B 代表把A的值更新为B 分析:简单的线段树,属于模板题 线段树,一种二叉搜索树,每个节点代表一段区间。在该结构上的操作在log级别。 结构什么的还是自己看代码吧,有个整体概念后,根据题来看懂代码这种能力还是很必要。 今天刚接触的树,还是参照别人的代码ac的。感觉线段树用处会更多,需要在原创 2013-04-08 21:06:13 · 853 阅读 · 0 评论 -
poj2777线段树+lazy思想
题意:有一个长板子,多次操作,有两种操作,第一种是给从a到b那段染一种颜色c,另一种是询问a到b有多少种不同的颜色。 这题更加让我理解线段树的结构了,特别是lazy思想的运用。 事实上lazy思想就是个懒人的标记,若对于这个结点lazy标记为true,就代表不需要继续查找缩小的区间了。 主要是在更新结点的地方,若填充整个区间时,标记lazy,则在下次其他的更新操作时,若结点为ture,原创 2013-05-21 22:34:59 · 1063 阅读 · 0 评论 -
hdu1166线段树水题
线段树很有用噢! 多练练,lazy思想是什么呢,下一题学一下。 题意:对一个数组进行更改,和查询区间之和. #include #include using namespace std; struct segtree { int l; int r; int mid; int max; int sum; }T[600011];原创 2013-05-21 21:12:39 · 579 阅读 · 0 评论 -
hdu4417(树状数组)(线段树)(划分树+二分)
这题主要用来练习一下划分树和线段树; 线段树也可以做,但是划分树+二分思路更清晰。 划分树用来求logn时间的区间中第k大值,其中如果有相同大的值也不会覆盖,如区间内有2个5,则一个5为第n大,另一个5为第n+1大; 还是3种方法代码都敲出来吧,其中线段树和树状数组的思路是相同的,就是先对查询和原数组进行排序,然后利用树状数组和线段树通过判断赋值后快速求区间内的值。 这里线段树最后开大小时原创 2013-05-24 21:33:12 · 868 阅读 · 0 评论 -
poj3264 线段树水题
之前青岛市的一个比赛有题线段树,结果自己实在太二,用线段树去敲没想到自己哪儿错了。。。 结果今天回来一做一道求最值的水题就发现自己的错误了。。。。导致那场比赛呗虐啊。。。。 #include #include using namespace std; const int inf =1<<30; struct segtree { int l; int r;原创 2013-05-28 19:56:13 · 1119 阅读 · 0 评论 -
hdu 1542线段树(成段更新+离散化)
第一次做线段成段更新的题,这题需要离散化。 题意:给出几个矩形,求其覆盖面积。 思路:先离散化x坐标,然后加入矩形的上下边,对矩形上下边根据高度进行排序后。建树,从最高的边开始更新线段树,然后就是通过给每条边赋值上边-1下边1,通过节点中 iosum来判断每次线段树中的有效边,每次ans+=有效边*下一层边的高度,最后得出答案。 代码: #include #include #incl原创 2013-06-06 21:42:04 · 580 阅读 · 0 评论