
线段树
xds
野指针*
这个作者很懒,什么都没留下…
展开
-
AcWing 248. 窗内的星星
'两个囚犯从监狱的窗子里向外看,一个凝视着泥土,一个仰望着星空' #include <bits/stdc++.h>// #define LOCAL#define INF 0xf3f3f3f3f3f3f3f#define IOS ios::sync_with_stdio(false), cin.tie(0)#define int long long#define debug(a) cout << #a << "=" << a <<原创 2022-03-21 19:09:46 · 630 阅读 · 0 评论 -
AcWing 247. 亚特兰蒂斯(扫描线算法 + 线段树优化)
做法:用四元组(x, y1, y2, 1(-1))表示左右边界.将所有的纵坐标离散化,形成M个在y方向的区间.然后用一根线按照x从小到大进行扫描,在每段区间中,覆盖长度不变,此时可以求矩形面积.可以用线段树优化区间覆盖操作.注意:用一个区间的左端点表示该区间.#include <bits/stdc++.h>//#define LOCAL#define INF 0xf3f3f3f3f3f3f3f#define IOS ios::sync_with_stdio(false), c..原创 2022-03-21 12:48:44 · 855 阅读 · 0 评论 -
AcWing 246. 区间最大公约数(线段树 + 树状数组)
一个gcd(最大公约数)的推论:而且,其实就是的差分,记为算法设计:分别另外建立一个差分序列,用线段树和数组维护前缀和.初始化:add(i, a[i] - a[i - 1])build(1, 1, n + 1)1.对于"C l r d"指令,(树状数组)add(l, d), add(r + 1, -d), (线段树)change(l, d), change(r + 1, -d).2.对于"Q l r"指令,res = gcd(sum(l), ask(1, l + 1, r))...原创 2022-03-20 10:53:11 · 345 阅读 · 0 评论