随笔分类 -  数据结构——线段树

摘要:题目链接:https://www.acwing.com/problem/content/298/ 题目给定一个长区间[m,e]和一些短区间,短区间上有花费,问覆盖长区间的最小话费是多少? 通过dp可以在最少区间数模型上进行修改,转移的时候算上的是花费值,最后用线段树维护一下区间最小值即可。时间复杂度 阅读全文
posted @ 2020-08-02 10:59 WA自动机~ 阅读(124) 评论(0) 推荐(0) 编辑
摘要:题目链接:http://poj.org/problem?id=2482 给出每个点框定的区域,求区域叠加的最大值,可以通过如下算法: 将每个可行点都标记,记录这些点上的权值,维护一个叶结点是一个权值点的线段树,更新的时候注意,由于所有的点都是可行点,所以右边界要在最后删除,遇到同样的x坐标的,优先叠 阅读全文
posted @ 2020-07-15 11:05 WA自动机~ 阅读(194) 评论(0) 推荐(0) 编辑
摘要:题目链接:http://poj.org/problem?id=1151 实际上不下放lazytag就是一个保持另一层记录的过程。简单的来说,就是当cnt为0的时候,t[rt<<1].len+t[rt<<1|1].len才是真实信息,当cnt不为0的时候,这段的段长才是真实信息,t[rt<<1].le 阅读全文
posted @ 2020-07-14 16:06 WA自动机~ 阅读(248) 评论(0) 推荐(0) 编辑
摘要:题目链接:https://www.acwing.com/problem/content/247/ 操作有两种:求区间最大公约数+区间修改。 两者的结合可以运用更相损减术,维护一个差分数列,用一个树状数组维护数列的差分前缀和,其中要注意的是,树状数组和线段树的维护中要防止索引的越界!!其次,gcd得到 阅读全文
posted @ 2020-07-14 10:18 WA自动机~ 阅读(200) 评论(0) 推荐(0) 编辑
摘要:题目链接:https://www.acwing.com/problem/content/246/ 线段树合并线段的时候要更新结点中的ans值,但是这个值的更新依赖于lmax与rmax,这两个值的更新又依赖于sum,故查询的时候需要返回的是一个结点,返回代表的区间的信息。 代码: #include<i 阅读全文
posted @ 2020-07-14 08:53 WA自动机~ 阅读(166) 评论(0) 推荐(0) 编辑
摘要:题目链接:http://poj.org/problem?id=2182 题目给出一个n,代表牛的数量,编号是1-n,另外给出n-1个数,代表在某个位置之前有多少数是比这个位置的数小的,1之前没有比它小的,所以不给出。想法是最后一个数可以最先确定,如果最后一个数前面有a个数比他小,那他就是第a+1个数 阅读全文
posted @ 2020-04-01 12:29 WA自动机~ 阅读(215) 评论(0) 推荐(0) 编辑
摘要:题目链接:http://icpc.njust.edu.cn/Problem/Hdu/4107/ 题目给定一个初始值都是零的序列,操作只有一种,就是给一个区间加上一个数,但是当一个数大于等于给定的P的时候就会在这个数上加上两倍的C,否则加上一倍的C。对于这种区间修改以及最终查询的问题我们首要想到的就是 阅读全文
posted @ 2020-03-23 20:59 WA自动机~ 阅读(130) 评论(0) 推荐(0) 编辑
摘要:题目链接:https://www.luogu.com.cn/problem/P3372 题目是经典的线段树模板题,要求支持三种操作:①、查询区间和取模的值 ②、给指定区间加上一个值 ③、给指定区间乘上一个值 只要明确先做乘标记在做加标记就解决了问题,因为先做加标记再做乘标记的话就会出现加标记是小数的 阅读全文
posted @ 2020-03-08 20:17 WA自动机~ 阅读(207) 评论(0) 推荐(0) 编辑
摘要:题目链接:http://icpc.njust.edu.cn/Problem/Hdu/3973/ 题意是:给出一个模式串,再给出一些串组成一个集合,操作分为两种,一种是替换模式串中的一个字符,还有一种是查询模式串中[l,r]区间的字符串有没有出现在字符串集合中。 由于数据量很大,只能用O(nlogn) 阅读全文
posted @ 2020-03-08 18:40 WA自动机~ 阅读(218) 评论(0) 推荐(0) 编辑
摘要:题目链接:http://icpc.njust.edu.cn/Problem/Hdu/2795/ 题目大意:有一块长方形木板,从上到下被分成h*w的区域,现要将n个长条放进这些区域中,要求从上到下只要后面空余位置够就放,紧贴最左侧放置。由于给出长度为C的长条之后只要一个区间[l,r]的最大值大于等于C 阅读全文
posted @ 2020-03-08 15:19 WA自动机~ 阅读(103) 评论(0) 推荐(0) 编辑
摘要:1 #include<bits/stdc++.h> 2 using namespace std; 3 typedef unsigned int ui; 4 typedef long long ll; 5 typedef unsigned long long ull; 6 #define pf pri 阅读全文
posted @ 2020-03-08 12:49 WA自动机~ 阅读(155) 评论(0) 推荐(0) 编辑
摘要:题目链接:https://www.luogu.com.cn/problem/P1198 线段树的单点更新+区间查询,典型的求区间最大值。 代码如下: 1 #include<bits/stdc++.h> 2 using namespace std; 3 typedef unsigned int ui; 阅读全文
posted @ 2020-03-08 11:22 WA自动机~ 阅读(136) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示