线段树
wtcl
这个作者很懒,什么都没留下…
展开
-
扫描线
线段树要求的被覆盖的线段的总长 由于两个性质: 1.只关心线段树根节点上被矩形覆盖的长度 2.修改操作总是成对出现。 #include<cstdio> #include<cstring> #include<iostream> #include<algorithm> #include<vector> using namespace std; const int N=1e4+100; struct Node{ double y,x1,x2;int i原创 2020-10-06 17:55:40 · 81 阅读 · 0 评论 -
石油大 Addition Robot(线段树+矩阵乘)
把线段树的每个节点看成一个矩阵。 #include<cstdio> #include<cstring> #include<iostream> #include<algorithm> #define ll long long using namespace std; const int N=1e5+100; const int mod=1e9+7; char s[N]; struct mat{ ll m[3][3]; }; struct Node{ int原创 2020-08-31 10:24:29 · 127 阅读 · 0 评论 -
Longest Subarray HDU - 6602(线段树)
枚举区间的右端点,求左端点,可以解决大多数求最大最小区间的问题。 假设当前枚举到i,当前数字为x,设 pos1 是数字x从位置 i 向左开始第一次出现的位置,pos2 是第 k 次出现的位置,pos3 是第 k - 1 次出现的位置(下面会用到),当i位置没有x之前,对于x来说,可以选择的左端点区间范围[pos1+1,i]和[1,pos2]; 当i位置有x后,对于x来说,可以选择的左端点区间范围只剩[1,pos3];原先的[pos1+1,i]对左端点的贡献集体减一,原先 [ 1 , pos2 ] 的这段区间原创 2020-07-03 18:29:35 · 80 阅读 · 0 评论 -
Magician HDU - 5316(线段树区间合并)
题意:n个数,由1~n编号,每个数的范围是[-1000000000, 1000000000],两种操作:0 a b :输出区间[a, b]中子序列的最大和,并且该子序列中的每两个相邻元素在原序列中的下标的奇偶性不同; 1 a b :将下标为a的数改为b; 思路:这里的子序列并不需要连续;对于每段区间都有四种子序列:奇首奇尾(oo), 奇首偶尾(oe), 偶首奇尾(eo), 偶首偶尾(ee) 那么查询呢?也说对于在两个相邻区间的查询来说,不能单纯的query(m<<1, l, mid)原创 2020-07-02 12:08:20 · 127 阅读 · 0 评论 -
Taotao Picks Apples HDU - 6406(线段树)
参考博客:https://blog.csdn.net/qq_45458915/article/details/106954140 代码: #include<cstdio> #include<cstring> #include<iostream> #include<algorithm> using namespace std; const int N=2e5+10; int n,m; int a[N]; struct tree{ int l,r,maxx,cn原创 2020-06-30 13:29:23 · 101 阅读 · 0 评论 -
Glad You Came HDU - 6356(线段树剪枝+lazy标记)
题意:数组a刚开始全为0。给出n(数组a长度),m,X,Y,Z。 由X,Y,Z可以计算出m组(l,r,v):将区间(l,r)中小于v的数变为v 思路: 1.线段树维护区间最小值。区间更新,单点查询。 2.需要剪枝,如果当前区间的minn大于等于要更新的值可以直接返回。 代码: #include<cstdio> #include<cstring> #include<iostream> #include<algorithm> using namespace std原创 2020-06-27 22:12:43 · 125 阅读 · 0 评论 -
HDU - 3966(树链剖分)
讲解:https://blog.csdn.net/qq_45458915/article/details/102993978 代码: #include<cstdio> #include<cstring> #include<iostream> #include<algorithm> using namespace std; const int N=5e...原创 2020-04-11 21:33:29 · 153 阅读 · 0 评论 -
QTREE - Query on a tree(树链剖分)
#include #include #include #include using namespace std; const int N=1e4+10; int h[N],e[N2],w[N2],ne[N2],id[N2],cnt[N],idx; int son[N],size[N],top[N],in[N],value[N],ord[N],f[N],depth[N],c; void add(in...原创 2020-04-11 18:54:00 · 204 阅读 · 0 评论 -
Codeforces Global Round 7 E. Bombs(线段树)
题目: 给你一个置换,p1,p2,…,pn。假设排列的某些位置包含炸弹,这样至少存在一个没有炸弹的位置。对于某些固定的炸弹配置,请考虑以下过程。最初,有一个空集合,A。对于从1到n的每个i:将pi添加到A。如果第i个位置包含炸弹,请移除a中最大的元素。处理完成后,A将为非空。炸弹的配置成本相当于A中最大的元素。给你另一个置换,q1,q2,…,qn。 对于每个1≤i≤n,求出炸弹配置的成本,使得在q...原创 2020-03-27 19:00:06 · 161 阅读 · 0 评论