线段树
SundayJerry
这个作者很懒,什么都没留下…
展开
-
东北四省D.Lowbit(势能线段树)
D.Lowbit 有两种操作 1.是对区间[l,r]内的数都加上lowbit(a[i]) 2.求区间[l, r]的sum 由于lowbit(x)表示最低为2进制1,且一开始的a_i最多在2^32次方内,所以我们只需要维护一个区间sum,区间laz标记和一个当前位置的数是否为最高位1即可 #include<bits/stdc++.h> #define ls u<<1 #define rs u<<1|1 #define ll long long #define sc scan原创 2021-10-02 23:36:45 · 220 阅读 · 0 评论 -
P3373(线段树)
利用线段树维护区间加和区间乘 #include<bits/stdc++.h> #define ll long long #define ls u<<1 #define rs u<<1|1 using namespace std; ll mod; int n,m; const int maxn = 1e5 + 5; ll a[maxn]; struct Segtree{ int l,r; ll sum; ll add,mul; }tr[maxn << 2]原创 2021-09-28 00:45:39 · 99 阅读 · 0 评论 -
P2574 XOR的艺术(线段树)
利用线段树维护区间sum,然后利用一个laz维护当前区间是否需要01翻转即可 #include<bits/stdc++.h> #define ll long long #define ls u<<1 #define rs u<<1|1 using namespace std; const int maxn = 2e5 + 5; struct Segtree{ int l,r; ll sum,laz; }tr[maxn << 2]; int a[maxn];原创 2021-09-27 11:56:55 · 74 阅读 · 0 评论 -
洛谷P3372(线段树)
利用线段树维护区间加和区间和(懒标记做法即可) #include<bits/stdc++.h> #define ll long long #define ls u<<1 #define rs u<<1|1 using namespace std; const int maxn = 1e5 + 5; struct Segtree{ int l,r; ll sum,laz; }tr[maxn << 2]; int a[maxn]; void pushup(i.原创 2021-09-27 11:43:49 · 87 阅读 · 0 评论 -
Can you answer these queries III(线段树)
题目链接 题意 求区间的最大连续子段和和单点修改 #include<bits/stdc++.h> #define ls u<<1 #define rs u<<1|1 #define sc scanf #define pr printf using namespace std; const int maxn = 5e5 + 100; int a[maxn]; struct segtree{ int l,r; int sum,lmax,rmax,mx; //维原创 2021-09-12 16:49:36 · 59 阅读 · 0 评论