线段树
xds
野指针*
这个作者很懒,什么都没留下…
展开
-
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 · 771 阅读 · 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 · 293 阅读 · 0 评论 -
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 · 560 阅读 · 0 评论