![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构_线段树
文章平均质量分 79
TouchDreamer
这个作者很懒,什么都没留下…
展开
-
HDU【1556】Color the ball
Color the ballCrawling in process... Crawling failed Time Limit:3000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Submit Status Description N个气球排成一排,从左到右依次编号为1,2,3...原创 2016-01-25 20:23:24 · 204 阅读 · 0 评论 -
HDU 5493 Queue(2015 ACM/ICPC Asia Regional Hefei Online)
题目分析 一道线段树的题目,因为是前面或者后面有k个比自己高的人,所以我们应该按照由身高从小到大排序,这样前面的人对后面的人就没有什么影响。我们线段树中存的是每一段有多少空位置。这样每次如果根节点的空位置小于k,那么很明显没办法放,同样因为前面对后面的没有什么影响,我只需要找到k和n-k-i中较小的,如果这个值小于0,那么则没有办法继续插入。因为满足字典序最小,因此往最前面位置插入就可以了。 #原创 2016-07-14 09:54:14 · 282 阅读 · 0 评论 -
HDU 1542 Atlantis(线段树,离散化,扫描线)
题目分析 第一次做这样的题目,一直不知道处理,感觉挺麻烦的,但是想明白之后发现一点也不难。给出相应的博客地址线段树扫描线详解 扫描,还有离散化我感觉都非常好处理,但是对于线段树更新的时候不好把握。也就是二分查找的时候得到右边端点的坐标为什么要-1的问题,因为计算过程中你会发现L,mid,mid+1,R,这时候少算了mid到mid+1的距离,那么怎么给加上呢?这时候很明显需要在右边加一,但是原创 2016-07-09 10:14:47 · 460 阅读 · 0 评论 -
HDU 5221 Occupation(树链剖分)
题目分析 很明显这道题是一道树链剖分的题目,这个中间用线段树处理的让我感觉老是很怪异!!可能没有这样处理过线段树吧!对于第一种操作,很明显就是树链剖分的简单处理,对于第二种操作只需要更改相对应线段树中的值就可以了,对于第三种由于轻重链剖分对于每棵子树上的东西都需要处理,但是每棵子树上所有节点所在的区间是连续的,因此转化为了线段树的区间更新,其他的都不难写了。还有一点我们用w[]表示树中的节点在线原创 2016-07-30 13:08:55 · 216 阅读 · 0 评论 -
BestCoder Round #65
HDU 5590 ZYB’s Biology (水题)#include <cstdio> #include <cstring> #include <iostream> #include <algorithm> using namespace std; const int maxn = 105;char s1[maxn],s2[maxn];int main(){ int T,N; sc原创 2016-08-06 15:05:24 · 227 阅读 · 0 评论 -
HDU 5877 Weak Pair(2016 ACM/ICPC Asia Regional Dalian Online)
题目大意 给你一个树,问你这棵树有多少对Weak Pair(一个对(u,v)成立当且仅当u是v的祖先并且av∗au<=ka_v*a_u<=k 题目分析 对于一个棵树来说最容易想到的就是dfs遍历这棵树了吧!!假如说现在遍历到v节点,那么很明显之前遍历过的一定是u的祖先,那么我们就可以进行查找Weak Pair了,对于当前节点u对应的value值我们需要找到所有父亲节点中值小于k/value的原创 2016-09-11 16:16:15 · 306 阅读 · 0 评论 -
HDU 1255 覆盖的面积(线段树+离散化+扫描线)
题目分析 上次做了一道只用计算覆盖一次的面积,这次需要计算覆盖2次的面积,其实就是在上面的基础上加一点东西,sum1[]表示覆盖一次的长度,sum2[]覆盖2次的长度,具体怎么操作看pushup函数即可,写的非常清楚。 #include <cstdio> #include <cstring> #include <iostream> #include <algorithm> using names原创 2016-11-03 09:45:04 · 255 阅读 · 0 评论 -
HDU 4578 Transformation(最恶心的线段树)
题目分析 这道题首先可以发现第三种操作和第二种操作都是很简单的,这里我就不多说了,但是对于加操作就有点需要特殊处理了(a+b)3=a3+3a2b+3ab2+b3(a+b)^3 = a^3+3a^2b+3ab^2+b^3很明显这样就可以推出来了,因为a3,a2,aa^3,a^2,a都是已知的,因此可以处理了,注意先处理(a+b)3(a+b)^3然后处理(a+b)2(a+b)^2再处理(a+b)(a原创 2016-11-03 18:21:20 · 243 阅读 · 0 评论 -
Codeforces Round #381 (Div. 1)
A. Alyona and mex 这道题就是使The mex of a set S最大,那么很明显直接找到最小的区间,然后就可以找到最小的The mex of a set S为n,然后对于构造这个序列为循环的(0~n-1),因为这样每个给定的区间的The mex of a set S至少为n。 #include <cstdio> #include <cstring> #include <ios原创 2016-12-04 13:03:03 · 281 阅读 · 0 评论 -
可持久化数据结构之主席树
前序 怀着激动地心情学习了可持久化数据结构主席树,其实很简单,但是自己因为眼残导致一直没有理解。后来发现这个问题,然后手动模拟了一下这个过程,然后大彻大悟。。表示自己就看了无修改的区间第K大,学习自百度巨巨。。本篇博文转自百度巨巨,链接chairman tree 引言 首先引入CLJ论文中的定义: 所谓的“持久化数据结构”,就是保存这个数据结构的所有历史版本,同时利用它们之间的共用数据原创 2017-04-18 21:49:13 · 613 阅读 · 0 评论 -
HDU 1540 Tunnel Warfare
题目大意 给定一个区间,有3种操作方式,操作为D是,摧毁a点,操作为Q时,询问包括a在内相怜的结点数,操作为R是,重新建立最近一次摧毁a点。 题目分析 本题为线段树区间合并,因为必须更新到叶子节点,所以不需要设置延迟标记,直接更新到叶子节点就可以了。 #include <cstdio> #include <cstring> #include <iostream> using namespac原创 2016-06-09 16:09:05 · 238 阅读 · 0 评论 -
POJ 3667 Hotel
题目大意 我用自己的话概括一下,给一段长为n的空区间,有2种操作,一种就是找到最左边长为w的连续的空区间并返回这段空区间最左边的区间号。另一种就是将从区间号a开头长度为b的这一段区间清空。 题目分析 这道题是关于线段树区间合并的基础题,不过自己想了很久,自己也写了十几篇的线段树的博客有了自己线段树的风格,其实个人感觉挺简约的,看着也挺舒服,感觉封装在结构体中挺丑的,什么都要加个前缀。原创 2016-06-09 10:32:52 · 318 阅读 · 0 评论 -
HDU 1394 Minimum Inversion Number
题目大意 给你一个序列,序列长度为n,序列中只包括0…..n-1这n个数,我们可以将这个序列的第一个数可以放到最后一个数,得到新序列,求这些序列中逆序对最小为多少。 题目分析 逆序数计算方法是:在逐个元素读取原始数列时,每次读取都要查询当前已读取元素中大于当前元素的个数,加到sum里,最后得到的sum即为原始数列的逆序数。接下来找数列平移后得到的最小逆序数,假设当前序列逆序数是sum,那么将原创 2016-05-31 21:46:48 · 278 阅读 · 0 评论 -
HDU【1166】敌兵布阵
敌兵布阵 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 65291 Accepted Submission(s): 27496 Problem Description C国的死对头A国这段时间正在进行军事演习,原创 2016-01-26 09:53:46 · 282 阅读 · 0 评论 -
HDU【2795】Billboard
Billboard Time Limit: 20000/8000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 16934 Accepted Submission(s): 7159 Problem Description At the entrance原创 2016-01-26 16:32:05 · 220 阅读 · 0 评论 -
hdu 【1754】 I Hate It
I Hate It Time Limit: 9000/3000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 58581 Accepted Submission(s): 22812 Problem Description 很多学校流行一种比较的习惯。老师们很原创 2016-04-03 17:20:24 · 189 阅读 · 0 评论 -
hdu 【1698】 Just a Hook
Just a Hook Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 25593 Accepted Submission(s): 12778 Problem Description In the game of D原创 2016-04-06 20:09:04 · 201 阅读 · 0 评论 -
WUST 【1593】 Count Zeros
1593: Count Zeros Time Limit: 1 Sec Memory Limit: 128 MB 64bit IO Format: %lld Submitted: 82 Accepted: 9 [Submit][Status][Web Board] Description Blue Wang is addicted in Math. He calcul原创 2016-04-26 22:54:04 · 261 阅读 · 0 评论 -
POJ 3468 A Simple Problem with Integers
题目分析 题目的意思我就不多说了,这里我主要学习了一下线段树的模板,并且精简了一下代码,作为一个模板存下来吧。 #include <cstdio> #include <cstring> #include <iostream> using namespace std; typedef long long LL; const int maxn = 100005; #define mid (L+R)/原创 2016-05-11 14:36:10 · 229 阅读 · 0 评论 -
POJ 2528 Mayor's posters
题目分析 贴海报就看成染色,后面染上的颜色会覆盖之前的颜色。于是就转化成了线段树区间更新,大家可以看到题目给出的范围为10000000,但是只有10000个点,所以需要进行离散化即可,离散化最初用的map,直接tle了,于是看别人的博客改成二分查找了。 #include <cstdio> #include <vector> #include <cstring> #include <iostrea原创 2016-05-17 15:34:30 · 209 阅读 · 0 评论 -
POJ 3264 Balanced Lineup
题目大意 就是给你奶牛的高度,并且站成一排,让你统计每一段奶牛中最高奶牛与最低奶牛的高度之差。 题目分析 用线段树维护区间最大值和最小值 #include <cstdio> #include <cstring> #include <iostream> #include <algorithm> using namespace std; const int maxn = 50005; const原创 2016-05-17 18:21:48 · 226 阅读 · 0 评论 -
HDU 4027 Can you answer these queries?
题目大意 同样的线段树的问题,区间操作,注意一句话就可以了Notice that the square root operation should be rounded down to integer.这句话的意思就是说每次区间更新到的叶子节点都要向下取整。 题目分析 这道题有需要考虑的地方就是因为每次更新必须到叶子节点,那么怎么办呢??这样会超时,那么我们同时会发现,一个节点最多被操作10原创 2016-05-18 11:29:00 · 259 阅读 · 0 评论 -
hdu 5692 Snacks(dfs序+线段树)
题目分析 这道题主要是建树的时候不好想,自己也没有做过这种类似的题目,因此不会。不过很容易理解,如果你学过LCA的离线算法,那么对这道题的理解可能会更好。总结起来只有关键的一句话,dfs序的每个子树的序列号是连续的,我们就根据这个建立线段树就行了。 #pragma comment(linker, "/STACK:1024000000,1024000000") #include <cstdio>原创 2017-05-23 12:44:43 · 379 阅读 · 0 评论