![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构_线段树
文章平均质量分 80
老年退役选手
BAT打工人
展开
-
HDU 1698 Just a Hook 线段树区间修改
传送门:点击打开链接 题意: 给定N个数,初始化全部为1. 一种操作,区间修改。把区间[L,R]内所有数字修改为另一个值X Q次操作之后,求区间[1,N]的和 分析: 简单的线段树区间修改操作应用题 具体实现见代码 #include using namespace std; const int maxn = 100000+5; struct node{ int原创 2018-01-30 19:37:50 · 201 阅读 · 0 评论 -
ZOJ 1610 Count the Colors 线段树区间修改
题意: 在一个区间为[0,8000]的布上染色,后染的颜色能覆盖前面的。 请问经过Q次染色后,每种颜色染的间断区间数目是多少。 分析: 区间覆盖问题容易联想到线段树的区间修改操作。 我个人喜欢区间从1开始,所以对所有的区间下标加了1。 注意: 题目的染色区间是把[A,B]染色,不是离散的点进行染色。 为了无缝染色,建树过程与普通的建树稍微有点区别,具体实现见代码。 #in原创 2018-01-30 20:31:22 · 157 阅读 · 0 评论 -
HDU1166 敌兵布阵
传送门:点击打开链接 题意:N个数, 有两种操作,单点修改跟区间求和 分析: 线段树裸题,也是树状数组裸题。 手敲了一个线段树模板,已经非常精简了,希望看到的同学喜欢。 代码如下: #include using namespace std; const int maxn = 50000+5; int a[maxn]; int n; struct node{ int left,原创 2018-01-30 16:05:14 · 138 阅读 · 0 评论 -
HDU1754 I Hate it 线段树模板题
题意: N个数,两种操作,单点修改,区间最大值查询 分析:因为是查询区间最值,所以不能使用树状数组。 线段树写法跟敌兵布阵的区间求和十分类似,也是模板题了。 具体实现见代码: #include using namespace std; const int maxn = 2e5+5; struct node{ int left,right; int mx;原创 2018-01-30 16:53:27 · 165 阅读 · 0 评论 -
HDU3265 扫描线+线段树 区间并
传送门:HDU3265题意:N个海报,每个海报中间有个矩形的洞。问这N个海报覆盖面积和是多少。分析: 非常经典的题目了,扫描线+线段树 进行 区间并操作 既然海报内有块矩形不能计算入内,只要把海报分为四块不重叠的部分就好了。重点是空间限制比较紧,交了若干次才A的。。改用unsigned short(0...65536) 存储坐标才A了。。注意:若扫描线个数小于2直接输出0,如果按常规的线段树求区间...原创 2018-04-15 11:24:58 · 278 阅读 · 0 评论 -
HDU3308 线段树区间合并 (求最长连续子串+单点修改)
传送门:HDU3308分析:线段树区间合并被刷烂的水题。。把自己代码风格的线段树放上来。//HDU3308 线段树区间合并 (求最长连续子串+单点修改) #include <cstdio> using namespace std; const int maxn = 100000; struct node{ int l,r; int lv,rv,mv; }; int n...原创 2018-04-17 17:19:49 · 536 阅读 · 0 评论