线段树
文章平均质量分 60
Strezia
这里介绍不了我
展开
-
P4198 楼房重建 线段树 *
P4198 线段树小 A 的楼房外有一大片施工工地,工地上有 NNN 栋待建的楼房。每天,这片工地上的房子拆了又建、建了又拆。他经常无聊地看着窗外发呆,数自己能够看到多少栋房子。为了简化问题,我们考虑这些事件发生在一个二维平面上。小 A 在平面上 (0,0)(0,0)(0,0) 点的位置,第 iii 栋楼房可以用一条连接 (i,0)(i,0)(i,0) 和 (i,Hi)(i,H_i)(i,Hi) 的线段表示,其中 HiH_iHi 为第 iii 栋楼房的高度。如果这栋楼房上任何一个高度大于 000 的点与原创 2022-06-18 20:54:17 · 127 阅读 · 0 评论 -
CF242E XOR on Segment 线段树
Link线段树 2000题意给定长度为 nnn 的序列,两种操作1.求区间 [L,R][L, R][L,R] 的和。2.将区间 [L,R][L, R][L,R] 中的每个元素异或上 xxx。思路cnt[p][i] 表示 ppp 节点所管辖的数中的二进制的第 iii 位为1的个数。易得操作一即为∑\sum∑ cnt[p][i]*(1<<i)。考虑操作2,注意到如序列{0, 1, 1},若xor1,则变为{1, 0, 0},否则不变。也就是说若 xxx 在二进制下某位为1,则区间原创 2022-03-01 09:43:48 · 179 阅读 · 0 评论 -
P4556 [Vani有约会]雨天的尾巴 线段树合并做法*
Link线段树合并的板子题,等刷过几道再去补树剖做法。注意: 线段树空间开很多倍的同时,不要忘记把root数组也同样开到很多倍思路其实就是树上差分+LCA,但时空复杂度 O(NM)O(NM)O(NM),通过树上倍增将时间复杂度优化到 O((N+M)log(N+M))O((N+M)\log(N+M))O((N+M)log(N+M)),再通过线段树合并将空间复杂度同样降到这一级别。具体来说,对树上每个点建立一棵动态开点的权值线段树,支持修改某个位置,维护区间最大值和最大值所在的位置。代码stru原创 2022-02-07 03:03:12 · 260 阅读 · 0 评论 -
P1383 高级打字机 *
Link主席树思路用 size 数组表示当前子树节点个数,新加入节点时,若 size(lc)==mid−l+1size(lc) == mid - l + 1size(lc)==mid−l+1,则递归右子树,否则递归左子树。相对应的,询问第 i 个位置的字母时,若 i≤size(lc(p))i \leq size(lc(p))i≤size(lc(p)),则递归左子树,否则递归右子树,并将 i 减去左子树的大小。注意撤销操作时,最好直接新建根节点,一开始想当然直接将rt减去撤销的步数,然而如果不清空那原创 2022-02-07 02:06:15 · 687 阅读 · 0 评论 -
P1502 窗口的星星
Linklydp221思路一开始没考虑在边界的情况。。不知道为什么ac了。。。1.矩形边界上的星星不算,可以采用把所有星星向左、下各平移0.5距离(因为坐标都是整数),在此基础上,不妨假设圈住星星的矩形顶点坐标都是整数。2.对扫描线排序的时候,除了以 xxx 为第一关键字升序之外,还需要以 vvv 为第二关键字降序。代码struct Segment { ll up, down, x; ll v; Segment(ll l=0, ll r=0, ll h=0,ll v =原创 2022-02-06 14:47:50 · 655 阅读 · 0 评论