线段树
Joel__Li
星空和代码都有浪漫
展开
-
hdu1166 敌兵布阵 线段树
题目链接在这里题目大意:给出n个点的值,有三种操作:Query x y代表查询[x, y]之内的值的加和Add x y代表x点增加ySub x y代表x点减小y思路分析:裸的线段树,盘它!代码如下:#include <cstdio>#include <cstring>#include <iostream>#includ...原创 2019-01-24 20:48:23 · 116 阅读 · 0 评论 -
hdu1754 I Hate It 线段树
题目链接在这里题目描述:给出n个数,m次操作。操作有如下两种:1.Q x y,查询在[x, y]中最大的数2.U x y,将x点更新为y题目思路:用线段树维护[1, n]区间,单点更新区间查询。代码如下:#include <cstdio>#include <cstring>#include <iostream>#inclu...原创 2019-01-25 09:21:52 · 100 阅读 · 0 评论 -
poj3468 A Simple Problem with Integers 线段树【区间更新】
题目链接在这里题目描述:有n个数m个操作,操作有两种:1.Q x y 查询区间[x, y]的和2.C x y z 区间[x, y]中的每个元素增加z思路分析:运用线段树维护点的信息,在区间更新的时候lazy思想在节点上mark一下。代码如下:#include <cstdio>#include <cstring>#include <...原创 2019-01-25 18:07:49 · 130 阅读 · 0 评论 -
poj2528 Mayor's posters 线段树+离散化
题目链接在这里题目大意:在墙上贴海报,每张海报占据[l, r]区间,海报之间可能存在覆盖。问所有的海报贴完之后,能有几张海报可以被看到。解题思路:如果暴力扫一遍的话肯定会超时,所以应该用线段树。但是区间太大了,所以要考虑离散化。普通的离散化有问题,这里参考了一位博主的博客进行离散化。我一直RE,数组开打了4倍才AC的,如果有RE的同志记得开大数组试试。代码如下:#...原创 2019-01-27 14:44:06 · 133 阅读 · 0 评论 -
hdu4027 Can you answer these queries? 线段树
题目链接在这里题目描述:有n个数,m次操作,每次操作给出x y z三个数,规则如下:若x == 0,则将[ y , z ]区间的数开平方根(向下取整)若x == 1,则将[ y , z ]区间的和求出来。思路分析:这是个并查集问题,每次更新的时候将子节点开平方就可以了。但是值得注意的是,当值已经为1的时候,再开平方根已经没有意义了,所以优化一下,若某个节点值 == 最...原创 2019-01-31 18:04:07 · 179 阅读 · 0 评论 -
hdu1698 Just a Hook 线段树【区间更新】
题目链接在这里题目描述:在[1, n]区间有金属棍,棍的材料有三种,每种有不同的价值。现在有q种操作,每种操作有x y z三个数,意思是[ x, y ]区间上的金属棍的价值置为z。求q次更新之后,整个区间的总价值是多少。思路分析:这是个区间更新操作,如果用暴力更新的方法肯定会超时,所以考虑用线段树。代码如下:#include <cstdio>#incl...原创 2019-01-27 16:51:20 · 145 阅读 · 0 评论 -
poj 2892 Tunnel Warfare 线段树
题目链接在这里题目大意:一条直线上有n个连续的村庄,对村庄有m个操作,操作有3种:D x,将x村庄摧毁Q x,询问和x村(包括它自己)相连的村长有多少个R 恢复最后一个被摧毁的村庄思路分析:用线段树保存村庄的状态在叶子中维护三个变量:llong, rlong, midlong(名字是我瞎起的),分别代表左端点开始有多少个村庄相连、从右端点开始有多少个村庄相连、在这一...原创 2019-02-02 14:46:42 · 178 阅读 · 0 评论 -
zoj1610 Count the Colors 线段树
题目链接在这里题目描述:在一条直线上画不同颜色的线段,给出各线段的起点、终点和颜色,求画完之后,最终会有几种颜色,每个颜色有多少条线段。思路分析:我们用线段树保存各点的颜色,区间更新,最后query一下就好。注意题目给的是线段的起点和终点,是连续的。如果想用离散的表示的话,就让起点+1,代表一段。代码如下:非结构体:#include <cstdio>...原创 2019-01-29 21:33:21 · 131 阅读 · 0 评论 -
poj3264 Balanced Lineup 线段树
题目链接在这里题目描述:给出n个数q次询问,每次询问求[ x, y ]区间最大的数减去最小的数的结果。思路分析:用线段树的每个节点存储子节点的最大数和最小数,叶子节点的最大数和最小数是自己。代码如下:#include <cstdio>#include <cstring>#include <algorithm>#include &l...原创 2019-01-30 17:12:14 · 161 阅读 · 0 评论